LINQ2SQL - перекрестное соединение отправляется, когда я хочу внутреннего соединения - PullRequest
3 голосов
/ 01 сентября 2009

Это испускает внутренние объединения, что я и хочу:

var q =
    from itm in esdc.items
    join itmImg in esdc.itemImages on itm.itemId equals itmImg.itemId
    join itmIdent in esdc.itemIdentities on itm.imgIdentityId equals itmIdent.itemIdentityId
    join startImgs in esdc.vStartPgImgs on itmImg.imgId equals startImgs.imgId
    select ...

Это тоже работает, но были созданы перекрестные соединения. Как мне получить внутренние соединения? Я дважды проверил сущности, и отношения верны.

var q =
    from itmIdent in esdc.itemIdentities
    from itm in itmIdent.items
    from itmImg in itm.itemImages
    join startImgs in esdc.vStartPgImgs 
        on itmImg.imgId equals startImgs.imgId
    select ...

Если вам нужно, чтобы я опубликовал испущенный SQL и установил сущность, дайте мне знать.

1 Ответ

6 голосов
/ 01 сентября 2009

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

Как правило, если вы хотите, чтобы внутренние объединения использовались несколько join предложений.


1 (я говорю вроде как, потому что последующие последовательности могут зависеть от более ранних ... но для LINQ to SQL они почти всегда являются перекрестными объединениями.)

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