没有外键的实体框架连接

Mat*_*att 5 .net mysql entity-framework .net-4.0

我有一个消息表,其中每行都有发送该消息的用户的 ID。但我无法编辑数据库,并且没有外键。没有任何关系可以加入吗?

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
           })
Run Code Online (Sandbox Code Playgroud)

这就是我的代码,它可以运行,但不会返回任何内容。当我取消连接时,我得到了结果。

谢谢

Jes*_*cer 3

除了我对Craig Stuntz答案的评论之外,如果您放弃,您可以消除第二个查询,并在单个查询中将其全部返回,.FirstOrDefault()并且可以处理可能存在的 Sender(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
                        })
Run Code Online (Sandbox Code Playgroud)

  • 使用 lambda 可以达到相同的结果吗? (3认同)