2013-06-26 59 views
0

我尝试从EDMX迁移到CodeFirst。我写了一些代码,你可以在下面看到。 当我尝试从上下文的一些数据,我收到一个错误:EF 5:类型中的每个属性名称必须是唯一错误


(10,6):错误0019:在类型每个属性名称必须是唯一的。属性名称“Value”已经定义。


但我需要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

最后发现,不EF5的支持,但将在EF 6.什么可惜的支持...

相关问题