У меня есть эти классы:NHibernate каскадное удаление из другой коллекции сущностей
public class User
{
public IList<Order> LastOrders { get; set;}
}
public class Order {}
Где LastOrders это много-ко-многим карте.
Как сообщить (свободно) NHibernate удалить заказ из коллекций LastOrders для всех пользователей, когда я удалю заказ? Является ли это возможным?
То есть (дБ сохранить/код загрузки пропущено)
user.LastOrders.Add(order);
Session.Delete(order);
Assert(!user.LastOrders.Contains(order));
В настоящее время я сделать это вручную (поиск для пользователей, сбора обновлений, за исключением) перед удалением. Без этого NHibernate не может удалить ордер, поскольку он ссылается на LastOrders пользователей.
Да, но я буду получать сиротские записи в этом случае в таблице многих ко многим? – queen3
Хорошо, вы уверены, что осиротевшие строки будут игнорироваться NH? Что делать, если он вставляет новую пару «многие-ко-многим» с одинаковыми идентификаторами (если это возможно), а затем читает назад - будет ДВА одинаковых результатов, и я не уверен, что NH ожидает этого. Во всяком случае, это не похоже на чистое решение для меня. – queen3