Entity Framework Join без внешнего ключа - PullRequest
4 голосов
/ 24 ноября 2010

У меня есть таблица сообщений, в которой есть идентификатор пользователя, который отправил ее в каждой строке.Но я не могу редактировать базу данных, и нет никаких внешних ключей.Можно ли присоединиться без каких-либо отношений?

var msgs = (from m in dbContext.messages

                        join a in dbContext.users on m.userid equals a.id into sender
                        where (m.date > LastReceivedDate)
                        orderby m.date

                        select new
                        {
                            Sender = sender.FirstOrDefault(),
                            Message = m
                        })

Это мой код, и он работает, но никогда ничего не возвращает.Когда я забираю объединение, я получаю результаты.

Спасибо

Ответы [ 2 ]

3 голосов
/ 25 ноября 2010

В дополнение к моему комментарию к Craig Stuntz answer вы можете исключить 2-й запрос и вернуть его в одном запросе, если вы откажетесь от .FirstOrDefault()и может иметь дело с Отправителем, который может быть null, если в соединении нет пользователей.

var msgs = (from m in dbContext.messages

                        join a in dbContext.users on m.userid equals a.id into sender
                        where (m.date > LastReceivedDate)
                        orderby m.date

                        select new
                        {
                            Sender = sender,
                            Message = m
                        })
0 голосов
/ 24 ноября 2010

объединение без общих атрибутов является перекрестным продуктом обеих сущностей.Вот как сделать перекрестный продукт, используя запрос LINQ:

http://alitarhini.wordpress.com/2010/11/20/114/

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