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