public DataContext() { string connString = ConfigurationManager.ConnectionStrings["FormHost"].ConnectionString; lock (_lockObj) { if (_m == null) { var builder = new DbModelBuilder(); RegisterConfigurations(builder); var conn = new SqlConnection(connString); _m = builder.Build(conn); conn.Close(); } var db = new CNDDbContext(connString, _m.Compile()); SetOC(db); } Users = new UserRepository(this); Fills = new FillRepository(this); Organizations = new OrganizationRepository(this); DocumentTypes = new DocumentTypeRepository(this); DocTypeVersions = new DocTypeVersionRepository(this); }
internal static DbCompiledModel GetCompiledModel(string connectionName) { return(registeredModels.GetOrAdd(connectionName, connectionString => { var builder = new DbModelBuilder(); CFConfig.Default.ParallelScanAttributes <TableAttribute>((type, attr) => { //注册实体类型 typeof(DynamicContext).GetMethod("ConfigMap", BindingFlags.NonPublic | BindingFlags.Static).MakeGenericMethod(type).Invoke(null, new object[] { builder }); //设置TableAttribute属性 var config = builder.Types().Where(entity => entity == type); config.Configure(entity => { var entityConfig = DataEntityUtils.Entity(type); entity.HasEntitySetName(entityConfig.TableAttribute.TableName); entity.ToTable(entityConfig.TableAttribute.TableName); entity.HasKey(entityConfig.TableAttribute.PrimaryKey); foreach (var field in entityConfig.ColumnAttributes) { if (field.Value.IsExtend /* && !field.Value.IsInherit*/) { entity.Ignore(field.Key); } } }); }); DbConnection connection = GetConnection(connectionString); DbModel model = builder.Build(connection); return model.Compile(); })); }
public static DbCompiledModel CreateModel(LazyInternalContext internalContext) { DbModelBuilder modelBuilder = internalContext.CreateModelBuilder(); DbModel dbModel = internalContext._modelProviderInfo == null?modelBuilder.Build(internalContext._internalConnection.Connection) : modelBuilder.Build(internalContext._modelProviderInfo); internalContext._modelBeingInitialized = dbModel; return(dbModel.Compile()); }
public ModificationCommandTreeGenerator(DbModel model, DbConnection connection = null) { DebugCheck.NotNull(model); _compiledModel = model.Compile(); _connection = connection; using (var context = CreateContext()) { _metadataWorkspace = ((IObjectContextAdapter)context).ObjectContext.MetadataWorkspace; } }
private void BuildDbModels() { dbModels = new Dictionary <string, DbCompiledModel>(); schemaSpacesToEntities = entityTypeDiscovery.DiscoverEntities(); foreach (string schemaSpace in schemaSpacesToEntities.Keys) { DbModel model = BuildDbModel(schemaSpace); if (model != null) { dbModels.Add(schemaSpace, model.Compile()); } } }
private static DbCompiledModel BuildModel(Type[] types) { var builder = new DbModelBuilder(); foreach (var configuration in types .Select(Domain.Configuration.Current.Container.Resolve) .Cast <IEntityModelConfiguration>().ToArray()) { configuration.ConfigureModel(builder.Configurations); } DbModel model = builder.Build(new SqlConnection(ConnectionString)); return(model.Compile()); }
//protected override bool ShouldValidateEntity(DbEntityEntry entityEntry) //{ // return base.ShouldValidateEntity(entityEntry); //} protected override void OnModelCreating(DbModelBuilder modelBuilder) { //modelBuilder.Entity<BlogPost>().ToTable("tbl_blog_post"); var typesToRegister = Assembly.GetExecutingAssembly().GetTypes() .Where(type => !String.IsNullOrEmpty(type.Namespace)) .Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration <>)); foreach (var type in typesToRegister) { dynamic configInstance = Activator.CreateInstance(type); modelBuilder.Configurations.Add(configInstance); } //modelBuilder.ComplexType<BillingAddress>() // .Property(p => p.CreditCardNumber) // .HasColumnName("CardNumber"); //modelBuilder.ComplexType<Address>() // .Property(p => p.StreetAddress) // .HasColumnName("StreetAddress"); //var count = this.Database.SqlQuery<int>("SELECT COUNT(*) FROM Customers"); //These are all to find out the EF objects ConfigurationRegistrar registrar = modelBuilder.Configurations; ConventionsConfiguration conventions = modelBuilder.Conventions; DbModel dbModel = modelBuilder.Build(this.Database.Connection); EdmModel edmModel = dbModel.ConceptualModel; EntityContainerMapping containerMapping = dbModel.ConceptualToStoreMapping; DbProviderInfo dbProviderInfo = dbModel.ProviderInfo; DbProviderManifest dbProviderManifest = dbModel.ProviderManifest; EdmModel dbModelStoreModel = dbModel.StoreModel; DbCompiledModel dbCompiledModel = dbModel.Compile(); PropertyConventionConfiguration propertyConvention = modelBuilder.Properties(); TypeConventionConfiguration typeConvention = modelBuilder.Types(); //modelBuilder.RegisterEntityType(); //registrar.AddFromAssembly() //conventions.AddFromAssembly(); //propertyConvention // .Where(info => info.GetType() is typeof(string)) // .Configure(cfg => cfg.HasMaxLength(200)); //typeConvention.Configure(cfg => cfg.MapToStoredProcedures()); //All Configurations //System.Data.Entity.ModelConfiguration.Configuration //All Conventions //System.Data.Entity.ModelConfiguration.Conventions //modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); base.OnModelCreating(modelBuilder); }