У меня проблема с невозможностью использования .RemoveAll
при получении коллекции через NHibernate.
У меня есть объект с именем 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
в этом контексте, или я должен подумать о другом способе удаления элемента?