0

请有人能用英语解释以下代码的作用吗?

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>();
4

1 回答 1

2

你能运行代码并查看它生成的 SQL 吗?

我猜这很接近这个:

SELECT *
FROM Location
WHERE LocationId IN (SELECT LocationId FROM UserLocation WHERE UserId = @UserId)

看起来它正在尝试根据用户 ID 查找给定用户的所有位置。

Subqueries.PropertyIn 正在运行“内部选择”。
SetProjection 返回可能列的子集。
限制用于构建 WHERE 子句。
DetachedCriteria 和 CreateCriteria 用于构建 SELECT 语句。
最后的 List 运行查询并返回给定类型的对象列表。

于 2010-01-27T09:31:12.183 回答