Проблема двух контекстов данных LINQ - PullRequest
0 голосов
/ 13 августа 2010

Я получаю эту ошибку при использовании LINQ2SQL:

The query contains references to items defined on a different data context.

Вот код:

    var instances = (from i in context.List
                     join j in context.CatsList on i.ListID equals j.ListID
                     join c in context.Cats on j.CatID equals c.CatID
                     where c.SID == Current.SID
                     orderby i.Title
                     select i).Distinct();

Проблема, насколько я могу убедиться, состоит в том, что объект Current на самом деле является объектом LINQ2SQL, возвращаемым из свойства, выполняющего другой оператор LINQ.

Таким образом, LINQ2SQL не любит выполнять запрос к базе данных, где запрос должен быть построен из одного оператора LINQ, включая результат другого оператора.

Моя проблема в том, что (я постараюсь обобщить проблему здесь), объект Current извлекается с использованием того же контекста, что и запрос выше, и в конечном итоге Current.SID должен просто разрешиться в int так в чем же проблема компилятора с его выполнением?

Короче говоря, почему невозможно выполнить запрос LINQ, используя возвращенный объект предыдущего запроса в качестве аргумента?

1 Ответ

0 голосов
/ 13 августа 2010

Это решение проблемы, а не прямой ответ на ваш последний вопрос, но вы, вероятно, можете обойтись с:

var sid = Current.SID;
var instances = (from i in context.List
                 join j in context.CatsList on i.ListID equals j.ListID
                 join c in context.Cats on j.CatID equals c.CatID
                 where c.SID == sid
                 orderby i.Title
                 select i).Distinct();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...