如何使用兩個EDMX,在單獨的程序集中,但在SAME數據庫之上,
創建一個linq-to-entities查詢,並使用它們兩者?EF:交叉edmx(相同的數據庫)linq-to-entites查詢
E.g.
這就是我要做的:
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替換實體1
(即使兩個上下文是從相同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));
}
約束:
我的意圖是使用兩個EDMXs擁有設計師支持 - 不會破壞設計師或在從數據庫更新時被覆蓋的方式破解EDMX。
EDMX#1不知道EDMX#2(然而#2可以知道關於#1)。
我希望結果轉換爲單個SQL查詢,而不是從第一部分讀取結果到內存,然後將它們返回到數據庫作爲查詢第二部分的輸入。
相關,但不是我要找:
- Cross database joins in Entity Framework4
- Linq to Entities/Entity Framework cross edmx "join"
- multiple edmx in the same .net solution
我預計這將需要使用一個單一的背景和我檢查合併EDMXs做到這一點的方法,但是,你的黑客可能更簡單。 – 2011-05-25 08:16:43
內部使用的容器名稱是什麼? – 2011-05-25 08:17:56
- 用於緩存ObjectContext的元數據,以更快地創建上下文? – 2011-05-25 15:46:32