У меня есть приложение ASP.NET MVC, которое использует Linq to Sql для доступа к данным.
Скажем, у меня есть два объекта: объект Order, который имеет внешний ключ к объекту Customer по CustomerID. Итак, в моем классе Order вы увидите два свойства: поле int CustomerID и член EntityRef, доступный для свойства Customer.
При редактировании или отправке Заказа мое приложение MVC будет обновлять поле CustomerID непосредственно из класса Заказа вместо обновления свойства Customer. Это избавляет нас от необходимости извлечения записи о клиенте, и я могу использовать код привязки модели по умолчанию для автоматического заполнения свойства, если в отправленном запросе формы есть запись customerID.
Это работает нормально, однако позже в некоторой другой части кода - скажем, в части бизнес-правил, некоторая логика получит доступ к свойству Customer объекта Order. Например:
if (order.Customer.HasPreviousOrders) then ...
Даже если поле CustomerID установлено, поле Customer имеет значение null, поэтому это бизнес-правило выдает исключение.
Я знаю, что Linq 2 Sql использует EntityRefs для отложенной загрузки. Мой вопрос: есть ли способ вызвать отложенную загрузку объекта EntityRef, если поле ID было изменено?
У нас есть динамический механизм правил, поэтому я не могу контролировать, какие объекты внешнего ключа понадобятся. Я бы предпочел не проходить через все мои контроллеры для прямой установки значений EntityRef <>.
Спасибо за помощь.