0

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

1 回答 1

0

最后发现在EF5中不支持,但是在EF 6中会支持。可惜……

于 2013-06-26T07:13:14.560 回答