2つのEDMXを別々のアセンブリで、同じデータベースの上に
使用して、両方を使用するlinq-to-entitiesクエリを作成するにはどうすればよいですか?
例えば
これが私がやろうとしていることです:
using (var context1 = new Entities1())
{
using (var context2 = new Entities2())
{
var items2 = context2.Items.Where(item2 => item2.Color == "Red");
var query = context1.Items.Where(item =>
items2.Any(item2 => item2.PainterId == item.PainterId));
}
}
>これにより、NotSupportedExceptionが発生します。
メッセージ:「指定されたLINQ式には、さまざまなコンテキストに関連付けられているクエリへの参照が含まれています。」
>この例外は、Entities2がEntities1に置き換えられた場合
でも(両方のコンテキストが同じEDMXからのものである場合でも)、両方が同じ接続文字列を使用している場合でもスローされます。
一方、比較のために、これは機能し、単一のSQLステートメントになります。
using (var context1 = new Entities1())
{
var items2 = context2.Items.Where(item2 => item2.Color == "Red");
var query = context1.Items.Where(item =>
items2.Any(item2 => item2.PainterId == item.PainterId));
}
制約:
私の意図は、デザイナーのサポート付きで2つのEDMXを使用することです。デザイナーを壊したり、データベースから更新するときに上書きされたりするような方法でEDMXをハッキングすることはありません。
EDMX#1はEDMX#2について知ることができません(ただし、#2は#1について知ることができます)。
結果を単一のSQLクエリに変換し、最初の部分からメモリに結果を読み取ってから、クエリの2番目の部分の入力としてデータベースに返すようにします。
関連していますが、私が探しているものではありません: