public void Validate(ValidationContext context)
{
var timer = nHydrate.Dsl.Custom.DebugHelper.StartTimer();
try
{
if (!this.IsGenerated) return;
#region Check valid name
if (!ValidationHelper.ValidDatabaseIdenitifer(this.DatabaseName))
context.LogError(string.Format(ValidationHelper.ErrorTextInvalidIdentifierComposite, this.Name, this.Entity.Name), string.Empty, this);
else if (!ValidationHelper.ValidCodeIdentifier(this.PascalName))
context.LogError(string.Format(ValidationHelper.ErrorTextInvalidIdentifierComposite, this.Name, this.Entity.Name), string.Empty, this);
#endregion
#region Table Component must have PK for parent table
var pkCount = 0;
foreach (var field in this.GetFields())
{
if (this.Entity.PrimaryKeyFields.Contains(field))
pkCount++;
}
if (pkCount != this.Entity.PrimaryKeyFields.Count)
{
context.LogError(String.Format(ValidationHelper.ErrorTextComponentMustHaveTablePK, this.Name), string.Empty, this);
}
#endregion
#region Check valid name
if (!ValidationHelper.ValidCodeIdentifier(this.PascalName))
context.LogError(string.Format(ValidationHelper.ErrorTextInvalidIdentifierComposite, this.Name, this.Entity.Name), string.Empty, this);
#endregion
#region Check that object does not have same name as project
if (this.PascalName == this.Entity.nHydrateModel.ProjectName)
{
context.LogError(string.Format(ValidationHelper.ErrorTextComponentProjectSameName, this.Name), string.Empty, this);
}
#endregion
#region Check for classes that will confict with generated classes
var classExtensions = new List<string>();
classExtensions.Add("collection");
classExtensions.Add("enumerator");
classExtensions.Add("query");
//classExtensions.Add("search");
classExtensions.Add("pagingfielditem");
classExtensions.Add("paging");
classExtensions.Add("primarykey");
classExtensions.Add("selectall");
classExtensions.Add("pagedselect");
classExtensions.Add("selectbypks");
classExtensions.Add("selectbycreateddaterange");
classExtensions.Add("selectbymodifieddaterange");
classExtensions.Add("selectbysearch");
classExtensions.Add("beforechangeeventargs");
classExtensions.Add("afterchangeeventargs");
foreach (var ending in classExtensions)
{
if (this.PascalName.ToLower().EndsWith(ending))
{
context.LogError(string.Format(ValidationHelper.ErrorTextNameConfictsWithGeneratedCode, this.Name), string.Empty, this);
}
}
#endregion
}
catch (Exception ex)
{
throw;
}
finally
{
nHydrate.Dsl.Custom.DebugHelper.StopTimer(timer, "Composite Validate - Main");
}
}