Linq to Entities: отношения * - * - PullRequest
0 голосов
/ 24 февраля 2010

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

 var requete = from mkt in ent.MARKETSEGMENT_MKT
 where mkt.FUNCTION2_FUN.Where(fu => fu.FUN_ID == FunId).FirstOrDefault().FUN_ID == FunId

Это работает, но ужасно. Как создать хороший запрос для отфильтрованных отношений * - *?

Спасибо

Ответы [ 2 ]

0 голосов
/ 24 февраля 2010

Практически никогда не правильно использовать join в LINQ to Entities (или LINQ to SQL).

Поскольку вы не указываете имена наборов сущностей, я должен догадаться. Я надеюсь, что это имеет смысл:

var requete = from fun in ent.FUNCTION
              where fun.FUN_ID == FunId
              from mkt in fun.MARKETSEGMENT_MKT
              select mkt;

Важным моментом здесь является то, что у вас есть двусторонняя связь между FUNCTION и MARKETSEGMENT. Используйте это!

0 голосов
/ 24 февраля 2010

используйте метод Join.

этот крошечный пример с сайта nerddinner.com может помочь:

 var dinners = from dinner in FindUpcomingDinners()
        join i in db.NearestDinners(latitude, longitude)
        on dinner.DinnerID equals i.DinnerID
        select dinner;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...