我是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完全相同,我做错了什么?
非常感谢任何指示。
戴夫头答案 0 :(得分:2)
我认为它与IQueryable FK设置混淆了 - 这意味着它在创建子IQueryables时并不尊重所有外键。
如果你有SQL Profiler,那么知道这些调用会产生什么是很好的。现在你可以使用:
解决这个问题President = Members.SingleOrDefault(x=>x.ID==club.PresidentID && x.ClubID=club.ClubID);