Example #1
0
 public static string ExtensionPropertyName(DataStructureExtendsInfo info)
 {
     if (info.Base.Module == info.Extension.Module)
     {
         return("Extension_" + info.Extension.Name);
     }
     return("Extension_" + info.Extension.Module.Name + "_" + info.Extension.Name);
 }
Example #2
0
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            DataStructureExtendsInfo info = (DataStructureExtendsInfo)conceptInfo;
            var extensionPropertyName     = ExtensionPropertyName(info);

            if (DslUtility.IsQueryable(info.Extension) && DslUtility.IsQueryable(info.Base))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Extension,
                                                                                          csPropertyName: "Base",
                                                                                          propertyType: "Common.Queryable." + info.Base.Module.Name + "_" + info.Base.Name,
                                                                                          additionalSetterCode: "ID = value != null ? value.ID : Guid.Empty;");
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Base,
                                                                                          csPropertyName: extensionPropertyName,
                                                                                          propertyType: "Common.Queryable." + info.Extension.Module.Name + "_" + info.Extension.Name,
                                                                                          additionalSetterCode: null);
            }

            if (info.Extension is IOrmDataStructure && info.Base is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().HasRequired(t => t.Base).WithOptional(t => t.{2});\r\n            ",
                                  info.Extension.Module.Name, info.Extension.Name, extensionPropertyName),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.Extension is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.Base);\r\n            ",
                                  info.Extension.Module.Name, info.Extension.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.Base is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.{2});\r\n            ",
                                  info.Base.Module.Name, info.Base.Name, extensionPropertyName),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
        }
Example #3
0
 private static bool ShouldCreateConstraint(DataStructureExtendsInfo info)
 {
     return(info.Extension is EntityInfo &&
            ForeignKeyUtility.GetSchemaTableForForeignKey(info.Base) != null);
 }
Example #4
0
 public static string GetConstraintName(DataStructureExtendsInfo info)
 {
     return(SqlUtility.Identifier(Sql.Format("DataStructureExtendsDatabaseDefinition_ConstraintName",
                                             info.Extension.Name,
                                             info.Base.Name)));
 }
 public static string ExtensionPropertyName(DataStructureExtendsInfo info)
 {
     return(info.ExtensionPropertyName());
 }