我尝试从 EDMX 迁移到 CodeFirst。我写了一些代码,你可以在下面看到。当我尝试从上下文中获取一些数据时,我收到一个错误:
(10,6):错误 0019:类型中的每个属性名称必须是唯一的。已定义属性名称“值”。
但我需要几个类中的 Value 属性。在 ObjectContext + EDMX 中它可以工作。我怎样才能正确配置它?谢谢你。
public abstract class Test
{
public int ID { get; set; }
}
public class Test1:Test
{
public int Value { get; set; }
public string Prim { get; set; }
}
public class Test2 : Test
{
public int Value { get; set; }
}
public class TestContext : BaseDbContext, IContext
{
public TestContext()
: base("name=TestContext")
{
}
public System.Data.Entity.DbSet<Test> TestData { get; set; }
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new TestConfiguration());
modelBuilder.Configurations.Add(new Test1Configuration());
modelBuilder.Configurations.Add(new Test2Configuration());
}
}
public class TestConfiguration : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<Test>
{
public TestConfiguration()
{
ToTable("Test");
HasKey(x => x.ID);
Map<Test1>(m =>
{
m.Requires("Type").HasValue(1);
})
.Map<Test2>(m =>
{
m.Requires("Type").HasValue(2);
});
}
}
public class Test1Configuration : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<Test1>
{
public Test1Configuration()
{
Property(x => x.Prim).HasColumnName("Prim");
Property(x => x.Value).HasColumnName("Value");
}
}
public class Test2Configuration : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<Test2>
{
public Test2Configuration()
{
Property(x => x.Value).HasColumnName("Value");
}
}