Использование EF 4.1 и LINQ для поиска неассоциированных m ... n-связанных объектов - PullRequest
0 голосов
/ 22 февраля 2012

У меня есть две таблицы / сущности Users и Companies.Оба связаны многими отношениями.Когда я использую эти таблицы в своем EDMX и генерирую POCO, таблица сопоставления mn исчезает (по-видимому, потому что там нет ничего, кроме двух PK).

Вместо этого EDMX создает свойства навигации, которыехорошо:

user.Companies ... -> gives me all users for that company

и

company.Users ... -> gives me all companies for that user

Но что, если бы я хотел, чтобы все пользователи, у которых НЕ была компания, связана с ними?Как получить доступ к отсутствующей таблице для создания правильного соединения?

1 Ответ

1 голос
/ 22 февраля 2012

Вы должны найти пользователей без компании (как вы сказали), поэтому их использование. Компании. Количество должно быть равно нулю, просто преобразуйте это в linq (как показано ниже):

var withoutCompanyUsers = Users.Where(x=>x.Companies.Count() == 0).ToList();

Редактировать: О вашей второй проблеме: а что, если я хотел бы получить все копии, не связанные с данным пользователем?

В этом случае вы должны найти компании, у которых нет конкретного пользователя:

Проверка компании имеет конкретного пользователя или нет:

company.Users.Any(x=>x.ID = givenUserID)

Выборка компаний без конкретного пользователя:

var companies = Companies.Where(x=>!x.Users.Any(y=>y.ID == givenUser.ID)).ToList();
...