3
目前我首先使用实体框架代码创建我的域模型。如下面的代码所示,我想创建“Test2”类和“Test1”类之间的一对多关联。但是当我运行应用程序时,它抛出一个异常:实体框架代码是否第一次支持只读导航属性
导航属性'T2'不是类型为 'Test1'的声明属性。验证它是否未被明确地从 模型中排除,并且它是有效的导航属性。
如果我修改导航属性“T2”使其具有“受保护”或公共设置者。没关系。所以看起来实体框架不支持只读导航属性。任何人都可以解释并给出这个问题的一些链接?
public abstract class Test1Base
{
public int Id {get; set}
public virtual Test2 T2 {get; private set;}
}
public class Test1 : Test1Base
{
}
public class Test2
{
public int Id {get; set;}
public string Name {get; set;}
}
public class MyDbContext : DbContext
{
public DbSet<Test1> Test1Table {get; set;}
public DbSet<Test2> Test2Table {get; set;}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Test1>().HasRequired(t => t.T2).WithMany();
}
}
是的。我必须让派生类在派生类中可见。 – user1012036 2012-04-22 14:52:35
我们已经有了这方面的bug,直到EF5发布之后才会得到修复。我会跟进并确保它被该错误所覆盖,或者根据需要提交新的错误。 – 2012-04-22 16:41:12