Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解NHibernate的ICriteria_Nhibernate_Icriteria - Fatal编程技术网

理解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语句。
最后的列表运行查询并返回给定类型的对象列表