0

私は次のフィールドを持つテーブルを持っています

  public class ActivationCode
{
  public virtual int LoginAccountId { get; set; }
   public virtual string ActivatedCode { get; set; }
   public virtual DateTime ActivationDate { get; set; }
}

ここで、LoginAccountidは私の主キーであり、次のようにマップされます。

 <id name="LoginAccountId">
  <generator class="native" />
</id>

保存中にLoginAccountIdをユーザーアカウントIDbtとして割り当て、保存中に独自のIDを取得してデータを保存し、両方のSession.Save()でデータを保存しようとしました。そして、Session.SaveorUpdateのSession.SaveorUpdate btは、次のようにエラーを表示します。

    Unexpected row count: 0; expected: 1.

誰かがこれを手伝ってくれる?

4

1 に答える 1

1

nhibernate.infoから:

5.1.5.7。割り当てられた識別子

アプリケーションに識別子を割り当てたい場合(NHibernateに識別子を生成させるのではなく)、assignedジェネレーターを使用できます。この特別なジェネレーターは、オブジェクトの識別子プロパティにすでに割り当てられている識別子値を使用します。この機能を使用してビジネス上の意味を持つキーを割り当てる場合は、十分に注意してください(ほとんどの場合、設計上の決定はひどいものです)。

その固有の性質により、このジェネレーターを使用するエンティティは、ISessionのSaveOrUpdate()メソッドを介して保存することはできません。代わりに、ISessionのSave()またはメソッドを呼び出してオブジェクトを保存または更新するかどうかをNHibernateに明示的に指定する必要があります。Update()

于 2012-05-10T11:40:22.810 に答える