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

Activerecord SingleOrDefault查询返回null(有时),即使数据存在,activerecord,subsonic,Activerecord,Subsonic,我是一个亚音速新手,正在用它编写我的第一个应用程序。我有一个数据库,有两个表,分别是Member和Club。Club表有三个字段链接到Member表中的主键(ID)(PresidentID、VicePresidentID和TreasureId)。如果我对Member.SingleOrDefault进行三次调用,它们都会返回有效数据。 i、 e: 亚音速在active record Club类中很好地创建了一个Members属性,该属性引用回Members表。但是,如果我通过Club active

我是一个亚音速新手,正在用它编写我的第一个应用程序。我有一个数据库,有两个表,分别是Member和Club。Club表有三个字段链接到Member表中的主键(ID)(PresidentID、VicePresidentID和TreasureId)。如果我对Member.SingleOrDefault进行三次调用,它们都会返回有效数据。 i、 e:

亚音速在active record Club类中很好地创建了一个Members属性,该属性引用回Members表。但是,如果我通过Club activerecord类的Members属性进行相同的调用,有些调用将返回null。 i、 e:

其中一个或两个调用将返回数据,但其他调用将返回null。这种情况发生在完全相同的成员ID上,我做错了什么

谢谢你的指点


Dave Head

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

如果您有SQL Profiler,那么了解这些调用生成了什么将是非常棒的。目前,您可以通过以下方式解决此问题:

President = Members.SingleOrDefault(x=>x.ID==club.PresidentID && x.ClubID=club.ClubID);

谢谢你的回复,罗伯。这确实有效。我相信我有可用的SQL分析器,但没有安装。我有一个SQL Server的完整副本,但在我的开发设备上只安装了SQL Express。当我有喘息的空间时,我会进一步调查的。戴夫
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);
President = Members.SingleOrDefault(x=>x.ID==club.PresidentID && x.ClubID=club.ClubID);