現在、最初に Entity Framework コードを使用してドメイン モデルを作成しています。以下のコードが示すように、"Test2" クラスと "Test1" クラスの間に 1 対多の関連付けを作成します。しかし、アプリケーションを実行すると、例外がスローされました。
ナビゲーション プロパティ '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();
}
}