1
私は通常このようなデータを扱いませんが、IDはそれを試してみると思いました。それが判明したので、私は失敗した:/ /どのように進むかわからない。流暢Nhibernate:HasManyプロパティとしてアイテムを削除しないでください
私は、データベース・オブジェクトのトラックがあります。マッピングファイルで
public virtual string Type { get; set; }
public virtual IList<DateTypeTrack> TrackDates { get; set; }
を:
Table("Tracks");
Map(x => x.Type).Not.Nullable();
HasMany(x => x.TrackDates).KeyColumn("TrackID").Cascade.All();
DateTypeTrackオブジェクトは、次のようになります。このようなマッピングファイルで
public virtual DateType DateType { get; set; }
public virtual Track Track { get; set; }
public virtual int Days { get; set; }
:
Table("DateTypeTracks");
References(x => x.DateType, "DateTypeID").Not.Nullable();
References(x => x.Track, "TrackID").Not.Nullable();
Map(x => x.Days).Not.Nullable();
もし必要ならば、私はそのDateTypeコードも投稿しますが、私はその必要はないと思います。
そして非常に単純です、私のサービス層でdeleteメソッドを記述しようとしています:
public void PushDelete(int id)
{
Track track = _tracks.Get(id);
try
{
_tracks.BeginTransaction();
_tracks.Delete(track);
_tracks.CommitTransaction();
}
catch (Exception)
{
_tracks.RollbackTransaction();
throw;
}
}
私はエラーを取得しておいてください。
could not delete collection: [TSE.Domain.DatabaseObjects.Track.TrackDates#12][SQL: UPDATE DateTypeTracks SET TrackID = null WHERE TrackID = @p0]
私はそのがやろうと理由を知りません最終的に更新しますが、それが問題の原因となっていると思います。どんな償還方法がありますか?
ありがとうございました。 DateTypeTrack
はすでに2つのエンティティ間の関連の世話をするので
を維持しないことをNHを伝えるために
Inverse
としてhasManyのマークを付ける必要があります私は主なオブジェクトを削除する前に? –いいえ、カスケードallはアイテムにdeleteコマンドをカスケードします。手動で行う必要はありません – Firo
クール。完璧に働いた。 –