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命令级联到这些项。不需要手动操作