2009-03-24 3 views
0

это можно сделать присоединиться к LINQ и возвращать данные только из одного набора данных, где другой ключ присутствовал, немного как:Регистрация в LINQ

var q = from c in customers 
      join o in orders on c.Key equals o.Key 
      select new {c.Name, o.OrderNumber}; 

, а затем вместо того, чтобы вернуться только две записи, то возвращение клиентов, как:

var q = from c in customers 
       join o in orders on c.Key equals o.Key 
       select c; 

Когда я пытаюсь сделать (что-то подобное), я получаю эту ошибку: Указанного выражения LINQ содержит ссылки на запросы, которые связаны с различными контекстами.

+0

ли оба Клиенты и Заказы в том же DataContext? –

+0

Я согласен с Стивеном, вы используете один и тот же файл данных, сообщение об ошибке кажется довольно специфичным. – eglasius

ответ

0

я буду считать, что вы пропустили, где положение, которое участвует в таблице заказов (или иначе присоединиться бы бессмысленно)

В этом случае, вы можете только что Linq вывод соединения.

var q = from c in customers 
     where c.Orders.Any(o=> o.ProductCode == productCode) 
     select c; 

Linq2Sql автоматически создаст свойство Orders, если у вас установлен внешний ключ; Я верю в Entity Framework, вам нужно вручную указать его.

+0

Я бы рискнул, что он не пропустит его. В конце концов, этот первый бит кода LOOKS прав. Учитывая описанный текст ошибки, я полагаю, что он пытается объединить два контекста данных. –

+0

Я предположил, что существует WHERE, потому что без него строка могла бы быть записана как «var q = from c в клиентах выбрать c;» –

0

Ошибка указывает на другую проблему:
Вы должны использовать тот же DataContext для каждого объекта в запросе, если используете Linq to SQL.

Ваш код должен выглядеть как-то так:

using (MyDataContext dc = new MyDataContext()) 
{ 
    var q = from c in dc.customers 
      join o in dc.orders on c.Key equals o.Key 
      select c; 

    // process q within the DataContext 
    // the easies would be to call q.ToList() 
} 
0

Будет ли в EF 4.0, чтобы создать присоединиться к рассе контексте?

Например:

TestModelEntities e1 = new TestModelEntities(); 
     TestModelEntities e2 = new TestModelEntities(); 

     var d = from firme1 in e1.firme 
       join g in e2.grad on firme1.grad.grad_id equals g.grad_id 
       select firme1; 
Смежные вопросы