Entity framework 禁用或关闭基于POCO属性的映射自动生成
我使用代码优先结构连接到现有数据库,我知道从技术上讲,这不是代码优先。我这样做是为了使用LINQtoEntities(而不是LINQtoSQL)模拟假数据存储库。在去年的CTP3中,这非常有效——我可以为我的表创建一个新配置,并显式添加映射到数据库的POCO属性 2011年7月,EF4.1中包含了第一个代码,所以我想我应该升级。不幸的是,EF现在对我来说太聪明了。例如,假定my POCO的所有属性都映射到数据库字段,因此,例如,属性Person.TempPassword{get;set;}会导致生成的SQL在my Person表中搜索TempPassword列;b如果我从我的POCO继承一个类,例如,Employee从Person继承,EF开始生成鉴别器列等 我知道我可以使用Ignore或[NotMapped]属性解决前一个问题,但是这是一个很大的麻烦,我不想这样做。后一个问题我无法解决 我所需要的只是一种能够关闭所有这些智能的方法,让我像以前那样显式地设置属性。请注意,我也尝试过删除每一个约束,例如modelBuilder.Conventions.Remove 我还重写了对OnModelCreating的调用,没有调用base.OnModelCreating,只包含了我自己的配置代码,如下所示 我的配置示例如下:Entity framework 禁用或关闭基于POCO属性的映射自动生成,entity-framework,ef-code-first,Entity Framework,Ef Code First,我使用代码优先结构连接到现有数据库,我知道从技术上讲,这不是代码优先。我这样做是为了使用LINQtoEntities(而不是LINQtoSQL)模拟假数据存储库。在去年的CTP3中,这非常有效——我可以为我的表创建一个新配置,并显式添加映射到数据库的POCO属性 2011年7月,EF4.1中包含了第一个代码,所以我想我应该升级。不幸的是,EF现在对我来说太聪明了。例如,假定my POCO的所有属性都映射到数据库字段,因此,例如,属性Person.TempPassword{get;set;}会导致
public class AddressBookConfiguration : EntityTypeConfiguration<AddressBook>{
public AddressBookConfiguration()
{
this.HasKey(x => x.AddressBookID);
this.ToTable("AddressBook");
this.Property(x => x.AddressBookID);
this.Property(x => x.AddressBookName);
this.Property(x => x.WhenCreated);
this.Property(x => x.TotalItems);
}
}
多谢各位 当需要扩展实体框架类功能时,我通常采用的方法是直接从数据库生成数据模型,而不是使用 我知道这是不够的,您不能用这种方式创建属性。 不过,恐怕这是你能得到的最好的了