有人可以用英文解释以下代码的作用吗?
var subCriteria = DetachedCriteria.For<UserLocation>();
subCriteria.SetProjection(Projections.Property("LocationId"))
.Add(Restrictions.Eq("UserId", userId));
return UoW.Session.CreateCriteria(typeof(Location))
.Add(Subqueries.PropertyIn("LocationId", subCriteria)).List<Location>();
答案 0 :(得分:2)
你能运行代码并查看它生成的SQL吗?
我猜这是非常接近的:
SELECT *
FROM Location
WHERE LocationId IN (SELECT LocationId FROM UserLocation WHERE UserId = @UserId)
看起来它正试图根据用户ID找到给定用户的所有位置。
Subqueries.PropertyIn正在运行“内部选择” SetProjection返回可能列的子集 限制用于构建WHERE子句 DetachedCriteria和CreateCriteria用于构建SELECT语句 最后的List运行查询并返回给定类型的对象列表。