Fluent nhibernate Fluent Nhibernate:无法删除具有尽可能多属性的项
我通常不会处理这样的数据,但我想我可以试试。结果我失败了,不知道如何继续 我有一个数据库对象跟踪:Fluent nhibernate Fluent Nhibernate:无法删除具有尽可能多属性的项,fluent-nhibernate,Fluent Nhibernate,我通常不会处理这样的数据,但我想我可以试试。结果我失败了,不知道如何继续 我有一个数据库对象跟踪: public virtual string Type { get; set; } public virtual IList<DateTypeTrack> TrackDates { get; set; } DateTypeTrack对象如下所示: public virtual DateType DateType { get; set; } public virtual Track T
public virtual string Type { get; set; }
public virtual IList<DateTypeTrack> TrackDates { get; set; }
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();
使用以下映射文件:
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();
如果有必要,我也会发布日期类型代码,但我认为不需要
我试图在我的服务层中编写一个非常简单的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]
我不知道它为什么要在最后更新,但我想这就是问题的原因。我有什么办法
谢谢。由于
日期类型跟踪
已经关心两个实体之间的关联,您应该将HasMany标记为反向
,告诉NH HasMany没有维护它(更新)
那么,我应该在删除主对象之前删除这些项吗?不,cascade all会将delete命令级联到这些项。不需要手动操作