Linq到SQL忽略第一个数据库记录
本文关键字:第一个 数据库 记录 SQL Linq | 更新日期: 2023-09-27 18:24:03
我在查询一个表时遇到了一个非常奇怪的问题,我刚刚将该表放入数据库中,用作MVC 4应用程序的自定义角色提供程序。
我有三个表,用户、角色和用户角色。目前,出于测试目的,我在数据库中只有一个ID为1的角色。
在UserRoles表中,我有两条记录,
- userRoleID 1,userID=1,roleID=1
- userRoleID 2,userID=14,roleID=1
现在,当尝试运行以下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子句更改为where ur.userID=14,那么它将按预期返回第二条记录。
如果我切换数据库记录,使其成为
- userRoleID 1,userID=14,roleID=1
- userRoleID 2,userID=1,roleID=1
它现在只返回userID为1的记录。有人遇到这件事吗?因为我不知道该怎么办。
谢谢。
如果一个表和查询结果,按照SQL标准中的定义,没有ORDER,你能向我解释第一条记录是什么吗?以及如何"切换它们"吗?
如果您想要一个订单,请按顺序排列。否则,SQL Server将按其喜欢的顺序返回结果。这是最基本的——SQL是基于集合的,SETS没有内在的顺序。