【发布时间】:2012-04-22 12:48:47
【问题描述】:
目前我首先使用实体框架代码来创建我的域模型。正如下面的代码所示,我想在“Test2”类和“Test1”类之间创建一个一对多的关联。但是当我运行应用程序时,它抛出了一个异常:
导航属性“T2”不是类型上的声明属性 '测试1'。确认它没有被明确排除在 模型并且它是一个有效的导航属性。
如果我修改导航属性“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();
}
}
【问题讨论】:
标签: entity-framework properties navigation code-first readonly