逆シリアル化されているオブジェクトをロックすると問題が発生します。NHibernate - 逆シリアル化オブジェクトのロック
例えば:
var session = sessionFactory.OpenSession();
var item = session.QueryOver<T>().Where(x => x.Id = "1").FutureValue().Value;
var serializedObject = Serializer.Serialize(item);
//do something with the serialized object
//...
var deserializedObject = Deserializer.Deserialze(serializedObject);
//lock record
session.Lock(deserializedObject, lockMode);
エラー:
a different with the same identifier value was already associated with the session...
しかし、開かれたセッションから同じのSessionId ISTエラーでのSessionId。
元の「アイテム」をロックすると機能します。
私はシリアル化/デシリアライゼーションとどのように対話できますか? NHibernateのは、まさにあなたのT
の1つのインスタンスを追跡している事前に
おかげウント宜しくは
...あなたはTの別のインスタンス(Deserialize' 'によって返されたもの)を使用しようとしています。デシリアライズされたオブジェクトを 'session.Merge'する必要があります(' session.Merge'は 'session'に付加された別のオブジェクトを返します)。 – xanatos
こんにちはxanatos、あなたはそれを説明できますか?今私はsession.Merge(deserializedObject)を試してみる。しかし、エラーは同じです:( –
'deserializedObject = session.Merge(deserializedObject)' – xanatos