什么';Nhibernate治疗FirstOrDefault和SingleOrDefault的区别是什么?可能的错误?

什么';Nhibernate治疗FirstOrDefault和SingleOrDefault的区别是什么?可能的错误?,nhibernate,linq-to-nhibernate,Nhibernate,Linq To Nhibernate,从NHibernate开始,使用Nhib 3.0(3.0.0.2001)Linq和以下模型 public class Request { public virtual Guid Id { get; set; } public virtual State {get;set;} } public class State { public virtual Guid Id {get;set;} } 所以我只是尝试根据请求的状态Id检索请求 _session.Query<R

从NHibernate开始,使用Nhib 3.0(3.0.0.2001)Linq和以下模型

public class Request
{
    public virtual Guid Id { get; set; }
    public virtual State {get;set;}
}
public class State
{
    public virtual Guid Id {get;set;}
}
所以我只是尝试根据请求的状态Id检索请求

_session.Query<Request>().Where(x => x.State.Id==someGuidValue).FirstOrDefault();
但是,使用SingleOrDefault可以正常工作

_session.Query<Request>().Where(x => x.State.Id==someGuidValue).SingleOrDefault();
\u session.Query().Where(x=>x.State.Id==someGuidValue.SingleOrDefault();

如有任何见解,将不胜感激。谢谢

我相信当多个记录满足您的选择条件时,
SingleOrDefault
将出错。其中
FirstOrDefault
将只提取第一条记录,而不管返回多少条记录

这就是它在LINQtoSQL中的工作方式

_session.Query<Request>().Where(x => x.State.Id==someGuidValue).SingleOrDefault();