Во многих моих методах действий ASP.Net MVC 3 у меня возникают серьезные проблемы с попыткой обновить запись (или набор записей), что приводит к следующему исключению:
Сущность может быть присоединена только как
изменено без исходного состояния, если оно
объявляет версию участника или нет
есть политика проверки обновлений.
Это потому, что я извлекаю запись из своего репозитория, используя один DataContext, а затем, после редактирования этой записи, пытаюсь сохранить ее, используя другой новый DataContext (то есть два отдельных метода в моем репозитории).
Проблема описана лучше, чем я когда-либо мог, в этом посте в блоге AzamSharp, озаглавленном Работа с LINQ to SQL. Проблемы с контентом в данных:
http://geekswithblogs.net/AzamSharp/archive/2008/05/17/122222.aspx
Я сталкиваюсь со многими, многими постами здесь и в других местах с различными предложениями, исправлениями и обходными путями, но тот факт, что этот, казалось бы, обычный рабочий процесс не поддерживается естественным образом в Linq 2 Sql, сводит меня с ума.
У меня вопрос (а): нужно ли отказаться от Linq 2 Sql для лучшего подхода, который обрабатывает этот рабочий процесс изначально? Если так, где я должен искать (EF, EF Code First, третье лицо)? Если нет, как вы справляетесь с этим и заставляете его работать (отсоединяете методы в частичных классах, отметках времени и т. Д.)?
Я мог бы написать конкретные методы, которые обрабатывают запрос и обновлять в одном вызове метода, но это потребовало бы от меня добавить бизнес-логику в хранилище, что является нет-нет (или мне так сказали). Плюс это звучит как хранимая процедура, обернутая в синтаксис C #. В некотором смысле, Linq 2 Sql излишним в этот момент.
Спасибо за предложения. И если вам нужны примеры кода и т. Д., Пожалуйста, посмотрите на пост в блоге выше. Это гораздо более красноречиво, чем я мог бы быть в этой точке.