理解NHibernate的ICriteria

理解NHibernate的ICriteria,nhibernate,icriteria,Nhibernate,Icriteria,请有人用英语解释一下下面的代码是做什么的 var subCriteria = DetachedCriteria.For<UserLocation>(); subCriteria.SetProjection(Projections.Property("LocationId")) .Add(Restrictions.Eq("UserId", userId)); return UoW.Session.CreateCriteria(typeof(Location))

请有人用英语解释一下下面的代码是做什么的

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>();
var subCriteria=DetachedCriteria.For();
次标准.SetProjection(Projections.Property(“LocationId”))
.Add(Restrictions.Eq(“UserId”,UserId));
返回UoW.Session.CreateCriteria(类型(位置))
.Add(subquerys.PropertyIn(“LocationId”,subCriteria)).List();

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

我猜这与此非常接近:

SELECT *
FROM Location
WHERE LocationId IN (SELECT LocationId FROM UserLocation WHERE UserId = @UserId)
看起来它试图根据给定用户的用户ID查找其所有位置

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