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代码,但我不认为它是必需的。
,我试图写在我的服务层的删除方法很简单:
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]
我不知道为什么它试图做最后更新,但我想这是什么原因造成的问题。我有什么样的追索权?
谢谢。
所以,我应该删除的项目在删除主对象之前? –
不,级联都会将删除命令级联到项目。不需要手动去做 – Firo
很酷。完美工作。 –