我正在尝试从此集合中获取第一个元素
List<Entity> data = session.Query<Entity>()
.Fetch(x => x.Photos.First())
.ToList();
我收到了这个错误。 获取请求必须是简单的成员访问表达式; '[100002]'是一个SubQueryExpression。参数名称:relatedObjectSelector。
现在我正在使用.fetch(x =&gt; x.Photos.First())因为我知道第一个元素将始终被填充,并且它是。我确实需要集合中的第一个元素来减少加载时间,所以这是我需要的精确解决方案,但是我收到了这个错误。
答案 0 :(得分:2)
Fetch将获取整个集合,你不能告诉它只是使用“fetch”获取第一个元素,但你可以使用投影或类似的东西获得所需的效果:
var subQ = QueryOver.Of<Entity>()
.SelectList(x => x.SelectMin(y => y.Photos)); // sub query selecting min photo id from entity
List<Photo> data = session.QueryOver<Photo>()
.Fetch(x => x.Entity).Eager // eager load the entity
.WithSubquery.WhereProperty(x => x.Id).In(subQ) // restrict the photo to those that are the first ones for the entity
.List() // execute query from database
.ToList(); // convert to List
虽然我不确定为什么你想要一个List而不是IList ..通常最好使用界面
答案 1 :(得分:-1)
List<Entity> data = session.Query<Entity>()
.Fetch(x=>x.Photos.FirstOrDefualt())//here You need get only first element
.ToList();