EF 5:类型中的每个属性名称必须是唯一错误

时间:2013-06-26 05:09:20

标签: entity-framework inheritance ef-code-first

我尝试从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");
        }
    }

1 个答案:

答案 0 :(得分:0)

最后发现EF5不支持,但EF 6支持。真可惜......