sen*_*ale 6 c# nhibernate fluent-nhibernate
我正在使用流利的Nhibernate.此代码根据其ID从DB加载类型T的实例.
public T GetById(IdT id, bool shouldLock)
{
T entity;
if (shouldLock)
{
entity = (T) NHibernateSession.Load(persitentType, id, LockMode.Upgrade);
}
else
{
entity = (T) NHibernateSession.Load(persitentType, id);
}
return entity;
}
Run Code Online (Sandbox Code Playgroud)
但我有很大的问题.当我打电话给我时,我得到的ObjectNotFoundException不是null.
如何使该实体可以为空并且不返回异常?
我觉得你错了Load.这将通过ID为您创建一个NHibernate代理对象,而无需实际查询数据库.
当你调用一个属性时,它将查询数据库,如果你提供了一个错误的id,那么没有底层对象,因此就是异常.
你将使用它的正常情况就是说你有一个State对象而用户在下拉列表中选择了PA.由于您已经拥有密钥PA,因此您可以调用Load然后将该状态对象传递到另一个对象以获得对象X与状态PA的正确关系,而不必查询数据库中的State对象.
您希望用于常规get对象的方法,或者如果key不存在则获取null Session.Get<T>(object ID)