Удаление каскада NHibernate из другой коллекции сущностей - PullRequest
1 голос
/ 11 марта 2010

У меня есть следующие классы:

public class User
{
  public IList<Order> LastOrders { get; set;}
}

public class Order {}

Где LastOrders - карта «многие ко многим».

Как мне сказать (свободно) NHibernate, чтобы удалить Order из коллекций LastOrders для всех пользователейкогда я удаляю заказ?Возможно ли это?

То есть (код сохранения / загрузки базы данных пропущен)

user.LastOrders.Add(order);
Session.Delete(order);
Assert(!user.LastOrders.Contains(order));

В настоящее время я делаю это вручную (поиск пользователей, обновление коллекции, сохранение) перед удалением.Без этого NHibernate не может удалить Order, поскольку на него ссылаются LastOrders пользователей.

1 Ответ

0 голосов
/ 11 марта 2010

Вы можете безопасно удалить Порядок, если для отображения коллекции задано игнорирование пропущенных строк.

Это оставит потерянные строки в таблице коллекции, которые будут проигнорированы NHibernate. Их можно очистить в некоторых пакетных процессах.

HasManyToMany(x => x.LastOrders)
    .NotFound.Ignore();

Это даст вам более быстрое удаление, чем ваш текущий подход. Недостатком является то, что ваши таблицы коллекции будут несовместимы с вашей моделью на некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...