实体框架无需外键即可加入

时间:2010-11-24 13:56:02

标签: .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
                        })

这是我的代码,它运行,但永远不会返回任何东西。当我离开时,我得到了结果。

由于

2 个答案:

答案 0 :(得分:3)

除了我对Craig Stuntzanswer的评论之外,如果您放弃.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
                        })

答案 1 :(得分:0)

没有共同属性的

加入是两个实体的交叉产品。这里是如何使用LINQ查询来交叉产品:

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