流暢な nhibernate で動作する NonUniqueObjectException 例外に固執しました。私は、いくつかのビジネスロジックを使用して、データベース内のいくつかのデータの存在をチェックするサイクルを持っています。データが DB でない場合は、追加する必要があります。ただし、このサイクル内のすべての操作は同じトランザクションで行われます。これは、サイクル本体がどのように見えるかです:
// Open session, start transaction
if(!_service.CheckIfEntityInDb(entity))
{
entity = new entity() {var1 = value1, var2 = value2};
_service.SaveOrUpdate(entity);
}
私はすでに を使用しようとしましたmerge
が、return me エンティティを空のフィールドとマージします。このエンティティは一種のマッピングであり、他のエンティティ タイプの 2 つのプロパティのみで構成されます。サイクルのすべてのステップでデータをコミットすることを除いて、この問題を解決するためのアドバイスをお願いします。ありがとう。
更新:
public bool CheckIfEntityInDb(entity)
{
Session.QueryOver<Entity>.Where(x => x.Id == entity.Id).Future().FirstOrDefault();
}
public bool CheckIfEntityInDb(entity)
{
Session.SaveOrUpdate(entity);
}