linq с включением и критериями - PullRequest
0 голосов
/ 24 июня 2011

Как мне перевести это в LINQ?

Скажем, у меня есть родительская таблица (скажем, клиенты) и дочерние (адреса).
Я хочу вернуть всех родителей, у которых есть адреса вКалифорния, и только адрес Калифорнии.(но я хочу сделать это в LINQ и получить граф объектов Entity)

Вот старомодный способ:


SELECT c.blah, a.blah
FROM Customer c
INNER JOIN Address a on c.CustomerId = a.CustomerId
where a.State = 'CA'

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

Вот что я пробовал до сих пор:

Редактировать: добавление экземпляра контекста по запросу


// this one doesn't filter the addresses -- I get the right customers, but I get all of their addresses, and not just the CA address object.

var ctx = new CustomersContext() // dbContext -- using EF 4.1 

from c in ctx.Customer.Include(c => c.Addresses)
where c.Addresses.Any(a => a.State == "CA")
select c

// this one seems to work, but the Addresses collection on Customers is always null
var ctx = new CustomersContext() // dbContext -- using EF 4.1 
from c in ctx.Customer.Include(c => c.Addresses)
from a in c.Addresses
where a.State == "CA"
select c;

Есть идеи?

1 Ответ

0 голосов
/ 24 июня 2011

Судя по приведенному выше коду, у вас уже есть регидратированная коллекция объектов Customer в переменной Customer.

Вам нужно будет вызвать функцию Include, когда вы заполняете свою коллекцию Customer выше. Таким образом, среда будет повторно обрабатывать включенные объекты во время извлечения из контекста данных.

Фактический код запроса выглядит неплохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...