我有一个“公司”类,其中有一个“操作员”列表
public class Company
{
public IList<Opertator> Operators {get; set; }
public Int32 Id {get; set;}
}
public class Operator {
public Int32 Id {get; set; }
public Company Company {get; set; }
}
当我映射如下:
public class CompanyMapping : ClassMap<Company>
{
public ProductMapping() : base()
{
Id(x => x.Id, "CompanyId").GeneratedBy.Native();
HasMany(x => x.Operators);
}
}
public class OperatorMapping : ClassMap<Operator>
{
public OperatorMapping()
{
Id(x => x.Id);
Reference(x => x.Company);
}
}
我有一个用户界面,用户可以通过复选框添加运算符和删除运算符。在 c# 代码中,我查询存储的公司,并添加到列表中,或从列表中删除。然后发送 SaveOrUpdate。我的问题是当我向现有公司添加一个操作员并保存/更新时,NHibernate 正在删除整个列表,然后再次重新安装它们。
我不想那样做。我可以拥有它,NHibernate 将检测更改的项目(列表中的新项目,并插入它们,并确定已删除的项目并删除它们)?
我尝试将映射更改为公司映射中的映射
HasMany(x => x.Operators).Inverse();
但它最终根本没有删除。有什么帮助吗?