即使数据存在,SingleOrDefault查询也会返回null(有时)

时间:2009-08-30 05:17:04

标签: activerecord subsonic

我是SubSonic newbe,正在编写我的第一个应用程序。我有一个包含两个名为Member和Club的表的数据库。 Club表有三个字段,链接到Member表中的主键(ID)(PresidentID,VicePresidentID和TreasurerID)。如果我对Member.SingleOrDefault进行三次调用,则它们都返回有效数据。 即:

President = Member.SingleOrDefault(x => x.ID == club.PresidentID);
VicePresident = Member.SingleOrDefault(x => x.ID == club.VicePresidentID);
Treasurer = Member.SingleOrDefault(x => x.ID == club.TreasurerID);

SubSonic很好地在活动记录Club类中创建一个Members属性,该类引用回Members表。但是,如果我通过Club activerecord类的Members属性进行相同的调用,则一些返回null。 即:

President = Club.Members.SingleOrDefault(x => x.ID == club.PresidentID);
VicePresident = Club.Members.SingleOrDefault(x => x.ID == club.VicePresidentID);
Treasurer = Club.Members.SingleOrDefault(x => x.ID == club.TreasurerID);

一个或两个调用将返回数据,但其他调用将返回null。这与成员ID完全相同,我做错了什么?

非常感谢任何指示。

戴夫头

1 个答案:

答案 0 :(得分:2)

我认为它与IQueryable FK设置混淆了 - 这意味着它在创建子IQueryables时并不尊重所有外键。

如果你有SQL Profiler,那么知道这些调用会产生什么是很好的。现在你可以使用:

解决这个问题
President = Members.SingleOrDefault(x=>x.ID==club.PresidentID && x.ClubID=club.ClubID);