У меня очень простая структура основных деталей в базе данных, доступ к которой осуществляется через Entity Framework с использованием следующей модели:
Модификации основного объекта отображаются с помощью хранимых процедур Вставка / Обновление / Удаление.
Объект Detail загружается и редактируется, а его главный объект также загружается в контекст, но он не изменяется. При сохранении изменений обновляются как подробности, так и основные объекты, даже если основная сущность не изменялась вообще (сущность подробностей => параметризованный оператор обновления; главная сущность => обновить вызов хранимой процедуры).
using (var context = new PlayGroundEntities())
{
var master = context.Masters.First(m => m.MasterId == MasterAId);
var detail = context.Details.First(d => d.DetailId == MasterADetail1Id);
detail.DetailValue = "Detail Value";
context.SaveChanges();
}
Это очень странно для меня, и я хотел бы избавиться от вызова sp обновления Master-сущности, если Master-сущность не изменена.
Если обновления главной сущности не отображаются через хранимые процедуры (обычные ef вещи, генерируются простые параметризованные операторы вставки / обновления / удаления sql), это странное поведение не происходит.
Это просто очень простой пример. В реальном проекте у меня сложная модель, в которой возникает та же проблема, и мне бы очень хотелось от нее избавиться. К сожалению, мне действительно нужно использовать сопоставления хранимых процедур, и загрузка сущности «Мастер» также важна.
Кто-нибудь испытывал нечто подобное или сумел как-то от него избавиться?
Я использую Entity Framework 4.0, выпущенную с .NET Framweork 4.0.
Заранее благодарю за помощь!