【发布时间】:2012-01-27 11:23:02
【问题描述】:
在通过 NHibernate 检索集合时,我遇到了无法使用 .RemoveAll 的问题。
我有一个名为 Order 的实体,我通过 NHibernate 进行持久化。
Order 有很多 OrderItems。这是我对这种关系的映射:
mapping.HasMany(o => o.Items)
.Cascade.AllDeleteOrphan()
.AsList()
.Inverse();
在我的域中看起来像这样:
public virtual IList<OrderItem> Items { get; set; }
据我了解,我必须使用IList,因为 NHibernate 有它自己的 List 实现。
现在我想在我的Order 类中使用此方法从我的Order 中删除一个项目:
public virtual void RemoveItem(string variantSku)
{
items.RemoveAll(x => x.Variant.VariantSku == variantSku);
}
不行,因为IList没有这个方法。
我试过了:
items.ToList().RemoveAll(x => x.Variant.VariantSku == variantSku);
但这似乎不起作用。我意识到items.ToList() 实际上创建了原始列表的副本,所以我想我可以试试:
var itemsList = items.ToList();
itemsList.RemoveAll(...)
但是它仍然通过 NHibernate 持续存在吗?
我的问题:我真的可以在这种情况下使用.RemoveAll,还是我应该考虑用不同的方法来删除一个项目?
【问题讨论】:
标签: c# nhibernate fluent-nhibernate