我坚持使用流利的 nhibernate 处理 NonUniqueObjectException 异常。我有一个循环处理一些业务逻辑,检查数据库中一些数据的存在。如果数据不是数据库,则应添加。但是这个周期内的所有操作都是在同一个事务中进行的。这是循环体的样子:
// Open session, start transaction
if(!_service.CheckIfEntityInDb(entity))
{
entity = new entity() {var1 = value1, var2 = value2};
_service.SaveOrUpdate(entity);
}
我已经尝试过使用merge
,但合并返回我的实体与空字段。该实体是一种映射,仅包含其他实体类型的两个属性。请给出解决这个问题的一些建议,除了在周期的每一步都提交数据。谢谢。
更新:
public bool CheckIfEntityInDb(entity)
{
Session.QueryOver<Entity>.Where(x => x.Id == entity.Id).Future().FirstOrDefault();
}
public bool CheckIfEntityInDb(entity)
{
Session.SaveOrUpdate(entity);
}