我尝试从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");
}
}
答案 0 :(得分:0)
最后发现EF5不支持,但EF 6支持。真可惜......