0
NHibernateを使用していますが、有線の問題を抱えています。 エンティティを持っていて、それを保存した後、エンティティのフィールドを変更して更新しようとしましたが、IDをnullに更新できないという例外が発生しました。NHibernateプロファイラで確認できますそれが直面しているのは、エンティティのIDをnullに更新するためのSQLを生成しますが、デバッグするときは更新の直前に値を持ちます。ここでNHibernate - エンティティidをnullに更新しようとします。
は私のコードです:
// The save works.
_session.Save(entityToSave, entityToSave.Id);
_session.Flush()
entityToSave.AddedSession = new AddedSession { Date = DateTime.Now };
_session.Update(entityToSave);
_session.Flush(); // this is where i get the exception.
任意のアイデアなぜですか?
エンティティとのマッピング:
public class Message
{
public virtual int Id {get;set;}
public virtual AddedSession AddedSession {get;set;}
public virtual IList<MessageToUser> MessagesToUser {get;set;}
}
public class MessageMapping : ClassMap<Message>
{
Table("MESSAGES");
Id(x => x.Id).Column("ID").GeneratedBy.Sequence("MSG_SEQ");
References(x => x.AddedSession).Nullable().Column("SESSION");
HasMany(x => x.MessagesToUser).KeyColumn("ID").Cascade().SaveUpdate().Inverse();
}
public class MessageToUser
{
public virtual int Id {get;set;}
public virtual Message Message {get;set;}
}
public class MessageToUserMapping : ClassMap<MessageToUserMapping>
{
Table("MESSAGES_TO_USERS");
Id(x => x.Id).Column("ID").GeneratedBy.Sequence("MSG_USER_SEQ");
References(x => x.Message).Not.Nullable().Column("MSG_ID");
}
[編集]あなたの質問をクラス定義とマッピングを追加します。おそらく問題はここにあります。 –
申し訳ありません、iveはそれらを追加しました – Pachu
'AddedSession'は表示されません。明示的にコードスニペットに保存されておらず、 'Message.AddedSession'マッピングにカスケードセットがありません。おそらく、InnerExceptionを含む完全な例外エラーメッセージと、あなたの問題を理解するのを助けるために目撃した生成されたSQLを含めるべきでしょうか。 –