EF Code First 4.3.1を使用しています。 複数のクラスライブラリを参照するASP.NET Webロールを開発しています。 それぞれにクラスと個々のDBコンテキストを含む2つのクラスライブラリがあります。IDを持つメンバーがメタデータコレクションに存在しません。パラメータ名:identity
ライブラリ1は、クラスAとB DBcon1を持っているとしましょう:DbSetとDbSet
はLibrary2は、クラスCおよびD クラスC { [キー] 公共int型のCIDを{取得持って言うことができます。セット;}
[Required]
public virtual A referencedA {get; set;}
}
DBcon2: DbSet<C> and DbSet<D>
を私のようなDBcon2を使用しようとすると:として
using (var con = new DBcon2())
{
C vr = new C();
vr.CId= 1;
vr.referencedA = DBCon1.As.First();
con.Cs.Add(vr);
con.SaveChanges();
}
私は例外を取得: は「アイデンティティを持つメンバーは、メタデータの収集に存在しない パラメータ名:ID "
DBCon1とDBcon2の両方が、SQL Serverデータベース" SampleDB "を使用しています。
正しい方向に指摘してください。
コンテキストをマージする方法についてはっきりしていますか?それはどういう意味ですか? また、Aにはキーがあり、DBcon1には知られていますが、DBCon2にどのように伝えますか? –
コンテキストは同じデータベース上にあるので、すべてのクラスを1つのコンテキストに入れることができます。マジカルマージコマンドではなく、データレイヤの手動リファクタリングです。 –
他のモジュールとは独立してコアDBCon1を追加したいので、DataContextを別のものにしたいと思っています。 DBCon2にAのメタデータを通知する方法を教えてください。 – manishKungwani