Как я могу использовать два EDMX в отдельных сборках, но выше той же базы данных,
создать запрос linq-to-entity, который использует их оба?
* 1003 Е.Г. *
Вот что я пытаюсь сделать:
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));
}
Ограничения:
Мое намерение состоит в том, чтобы использовать два EDMX с поддержкой дизайнера - без взлома EDMX таким образом, который нарушает работу дизайнера или перезаписывается при обновлении из базы данных.
EDMX # 1 не может знать о EDMX # 2 (однако # 2 может знать о # 1).
Я хочу, чтобы результат преобразовывался в один запрос SQL, а не считывал результаты из первой части в память, а затем возвращал их в базу данных в качестве входных данных для второй части запроса.
1025 *
*
<Ч />
Связано, но не то, что я ищу: