我在尝试查询表时遇到了一个非常奇怪的问题,我刚刚进入我们的数据库,用作MVC 4应用程序的自定义角色提供程序。
我有三个表,User,Role和UserRoles。目前,出于测试目的,我在数据库中只有一个角色,ID = 1。
在UserRoles表中,我有两条记录,
现在,当尝试运行以下linq(硬编码用于测试和示例目的)时,它将永远不会返回数据库中的第一条记录(userRoleID = 1)
var userRoles = from ur in _db.UserRoles
join r in _db.Roles on ur.roleID equals r.roleID into rj
from subR in rj.DefaultIfEmpty()
join u in _db.Users on ur.userID equals u.userID into uj
from subU in uj.DefaultIfEmpty()
where ur.userID == 1
select ur;
因此在此示例中,代码返回null。如果我将where子句更改为ur.userID = 14,那么它将按预期返回第二条记录。
如果我然后切换数据库记录,使它们变为
它现在只会返回userID 1的记录。有人遇到过这个问题,因为我不知道如何继续。
感谢。
答案 0 :(得分:0)
你能告诉我第一张唱片是什么吗?以及你如何切换它们"如果一个表和一个查询结果,根据SQL标准中的定义,是否为ORDER?
如果您需要订单,请按顺序输入。否则,SQL Server将以其喜欢的顺序返回结果。这是基础 - 基于SQL设置,SETS没有内在顺序。