У меня есть приложение для корзины покупок, работающее в MonoRail и использующее Castle ActiveRecord / NHibernate, и есть таблица ShoppingCart и таблица ShoppingCartItems, которые сопоставлены с сущностями.
Вот сценарий: пользователь добавляет вещи в корзину, скажем 5 товаров, и идет, чтобы просмотреть корзину. В корзине показаны все 5 товаров. пользователь дублирует вкладку / окно и получает другую вкладку из той же корзины (назовите ее вкладкой B). пользователь удаляет элемент из корзины, поэтому на вкладке B теперь есть 4 элемента, а на исходной вкладке A осталось 5 элементов. пользователь возвращается на вкладку A, обновляет что-то в корзине и нажимает кнопку «обновить», которая передает изменения. мое действие MonoRail пытается выполнить ARDataBind для ShoppingCartItems, используя данные из представления, которое включает все 5 элементов. когда он попадает к элементу, который пользователь удалил со вкладки B, он выдает «Нет строки с данным идентификатором» для этого элемента.
Не могу понять, есть ли способ, чтобы он не связывал эту строку, не возвращал ноль, не возвращал новый экземпляр и т. Д.? в атрибуте ARDataBind есть параметр AutoLoadBehavior, но он влияет только на загрузку дочерних объектов, а не корневой сущности. независимо от того, какую опцию я выберу, я получаю исключение до того, как элемент управления даже войдет в метод действия (за исключением AutoLoadBehavior.Never, но это не очень мне помогает).
Вместо этого у меня есть код, который вызывает Request.ObtainParamsNode (), чтобы вытянуть узлы формы и вручную разобрать их в объекты, и игнорирует те, которые больше не существуют. есть ли лучший способ?
спасибо.