示例#1
0
        public DynamicBareSchema(CanonicalContainer container)
        {
#if NETSTANDARD
            AssemblyBuilder assembly =
                AssemblyBuilder.DefineDynamicAssembly(
                    new AssemblyName(string.Format("Effort_DynamicEntityLib({0})", Guid.NewGuid())),
                    AssemblyBuilderAccess.Run);
#else
            AssemblyBuilder assembly =
                Thread.GetDomain().DefineDynamicAssembly(
                    new AssemblyName(string.Format("Effort_DynamicEntityLib({0})", Guid.NewGuid())),
                    AssemblyBuilderAccess.Run);
#endif

            ModuleBuilder entityModule = assembly.DefineDynamicModule("Entities");

            foreach (EntityInfo entity in container.Entities)
            {
                TableName name = entity.TableName;
                Type      type = CreateEntityType(entity, entityModule);

                this.Register(name, type);
            }

            this.dynamicAssembly = assembly;
        }
示例#2
0
        public DynamicBareSchema(CanonicalContainer container)
        {
            AssemblyBuilder assembly =
                Thread.GetDomain().DefineDynamicAssembly(
                    new AssemblyName(string.Format("Effort_DynamicEntityLib({0})", Guid.NewGuid())),
                    AssemblyBuilderAccess.Run);

            ModuleBuilder entityModule = assembly.DefineDynamicModule("Entities");

            foreach (EntityInfo entity in container.Entities)
            {
                string name = entity.TableName;
                Type type = CreateEntityType(entity, entityModule);

                this.Register(name, type);
            }

            this.dynamicAssembly = assembly;
        }
示例#3
0
        public static DbSchema CreateDbSchema(StoreItemCollection edmStoreSchema)
        {
            EdmTypeConverter   converter = new EdmTypeConverter(new DefaultTypeConverter());
            CanonicalContainer container = new CanonicalContainer(edmStoreSchema, converter);

            IBareSchema bareSchema = new DynamicBareSchema(container);

            TableConfigurationGroup tableConfig = new TableConfigurationGroup();

            tableConfig.Register(new BareSchemaConfiguration(bareSchema));
            tableConfig.Register <PrimaryKeyConfiguration>();
            tableConfig.Register <IdentityConfiguration>();
            tableConfig.Register <GeneratedGuidConfiguration>();
            tableConfig.Register <NotNullConfiguration>();
            tableConfig.Register <VarcharLimitConfiguration>();
            tableConfig.Register <CharLimitConfiguration>();
            tableConfig.Register <IndexConfiguration>();

            DbSchemaBuilder schemaBuilder = new DbSchemaBuilder();

            foreach (EntityInfo entityInfo in container.Entities)
            {
                DbTableInfoBuilder tableBuilder = new DbTableInfoBuilder();

                // Run all configurations
                tableConfig.Configure(entityInfo, tableBuilder);

                schemaBuilder.Register(tableBuilder);
            }

            RelationConfigurationGroup associationConfig = new RelationConfigurationGroup();

            associationConfig.Register <RelationConfiguration>();

            foreach (AssociationInfo associationInfo in container.Associations)
            {
                associationConfig.Configure(associationInfo, schemaBuilder);
            }

            return(schemaBuilder.Create());
        }
示例#4
0
        public static DbSchema CreateDbSchema(StoreItemCollection edmStoreSchema)
        {
            EdmTypeConverter converter = new EdmTypeConverter(new DefaultTypeConverter());
            CanonicalContainer container = new CanonicalContainer(edmStoreSchema, converter);

            IBareSchema bareSchema = new DynamicBareSchema(container);

            TableConfigurationGroup tableConfig = new TableConfigurationGroup();
            tableConfig.Register(new BareSchemaConfiguration(bareSchema));
            tableConfig.Register<PrimaryKeyConfiguration>();
            tableConfig.Register<IdentityConfiguration>();
            tableConfig.Register<GeneratedGuidConfiguration>();
            tableConfig.Register<NotNullConfiguration>();
            tableConfig.Register<VarcharLimitConfiguration>();
            tableConfig.Register<CharLimitConfiguration>();
            tableConfig.Register<IndexConfiguration>();

            DbSchemaBuilder schemaBuilder = new DbSchemaBuilder();

            foreach (EntityInfo entityInfo in container.Entities)
            {
                DbTableInfoBuilder tableBuilder = new DbTableInfoBuilder();

                // Run all configurations
                tableConfig.Configure(entityInfo, tableBuilder);

                schemaBuilder.Register(tableBuilder);
            }

            RelationConfigurationGroup associationConfig = new RelationConfigurationGroup();
            associationConfig.Register<RelationConfiguration>();

            foreach (AssociationInfo associationInfo in container.Associations)
            {
                associationConfig.Configure(associationInfo, schemaBuilder);
            }

            return schemaBuilder.Create();
        }