2013-12-08 4 views
0

OK. Проблема в следующемот многих до многих с сущностью каркаса

У меня есть БД-таблица «компании» в «компании» относится к «рынку» Каждая компания может иметь события в одной или нескольких «месяцев» например: Компания принадлежит на рынке B и имеющие события в марте, мае и августе

Это оставляет меня с 3-мя столами

Месяцы много-много с C ompanies много-много с рынков

сервировки:
месяцев
MonthID
Имя

Компании
CompanyID
Компан yName
[некоторые еще]

рынки
marketID
Имя

EF затем создает реляционные таблицы.

Я создал это с помощью EF 4.1 Model-first и сумел составить список на все месяцы/компании db.Companies.Where (c => c.Markets.Any (m => m.Id == 12)). ToList() возвращает все компании на рынке с ид = 12
db.Months.ToList(), очевидно, возвращает месяцев и все компании, имеющие событие, месяц

, но я не удается получить месяц-список только для компаний в рынке X

Edit: Пример для уточнения:
компании A и B и C имеет событие в мае и/или августе
А и В принадлежат рынку X, C Принадлежит рынок Y

Так листинг на рынке X должен быть:
января
февраля
марта
апреля
может
Компания A
Компания B
июня
июля
августа
Компания A

и т.д ..

ответ

0

месяцев только для компаний в рынке X можно найти следующим образом:

db.Months 
    .Where(m => m.Companies 
     .Any(c => c.Markets 
      .Any(x => x.Id == X))) 

Но слово «только» немного неуловимым здесь. Запрос касается компаний на рынке X, но не обязательно «только» на рынке X. Я думаю, это то, что вы имеете в виду. Было бы немного отличаться, чтобы получить месяцев для компаний, которые все на рынке X (т.е. один из их рынков X):

db.Months 
    .Where(m => m.Companies 
     .All(c => c.Markets // All 
      .Any(x => x.Id == X))) 
+0

Это один дал фактически тот же результат, как db.Months.ToList() A A пример. 2 Компании, принадлежащие Market X, имеют события в мае и августе. Поэтому, очевидно, мне нужно исключить все компании, которые НЕ принадлежат рынку X каким-то образом – rhdf

+0

Это было проще, чем я думал, см. Редактирование. –

+0

Хмм, дает тот же результат. См. Новое редактирование оригинальной почты. – rhdf

Смежные вопросы