linq中表的连接不正确

时间:2011-03-21 04:15:12

标签: asp.net asp.net-mvc linq asp.net-mvc-3 linq-to-objects

我有这些实体:

Account
-IdAccount: 1
-Money: 20
-IdInfo: 2

Navigation Property:  Info

Info
-IdInfo: 2
-Info: hi

Navigation Property: Account

当我使用linq做这样的事情时

var account = storeDB.Accounts.Include("Info").Single( a => a.IdInfo == 2 );

这将与IdAccount = 1和IdInfo = 1进行连接,而不是2.是否有人知道我可以进行查询的不同方式?我查看select bla bla bla,但我不知道如何把它放在一个对象中,因为我创建了一个Account.cs,而Info.c就像ASP MVC3音乐教程一样。

我有一种感觉它会做某种自然的连接,这就是为什么它将两个ID与1号相关联。

我已经检查了很长时间,并且无法解决这个问题,我们将非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

请尝试使用.Where( a => a.IdInfo == 2).Single();

答案 1 :(得分:0)

假设您正在使用Linq-to-Sql,请尝试:

using (var storeDB = new DataContext())
{
    var options = new DataLoadOptions();
    options.LoadWith<Accounts>(a => a.Info);
    db.LoadOptions = options;

    var account = from a in storeDB.Accounts
                  where a.IdInfo == 2
                  select a;
}

这个答案将提供额外的信息:How do you construct a LINQ to Entities query to load child objects directly, instead of calling a Reference property or Load()