如果没有找到任何内容,为什么Session.Load <User>(id)不返回null?

mrb*_*lah 4 nhibernate

当我尝试使用ID加载实体时:

Session.Load<User>(21);
Run Code Online (Sandbox Code Playgroud)

我得到一个'没有给定标识符存在的行'.

在我的代码中,我检查null如:

if(user == null)
Run Code Online (Sandbox Code Playgroud)

我怎么想知道该行是否不存在,或者如何让它返回null呢?

Mik*_*nty 7

因为它实际上并没有进行数据库的往返.实际上你正在为延迟加载找回代理,因此NHibernate无法知道它是否真的存在.如果您需要知道是否真的存在,您应该使用:

var entity = Session.Get(21)
Run Code Online (Sandbox Code Playgroud)