EF Принудительная проверка параллелизма - PullRequest
1 голос
/ 17 апреля 2010

У меня проблема с EF 4.0, с которой, я надеюсь, кто-то может помочь. В настоящее время у меня есть объект, который я хочу обновить последним в режиме выигрыша (то есть игнорировать проверки параллелизма и просто перезаписывать то, что в БД, тем, что отправлено). Кажется, Entity Framework включает не только первичный ключ объекта в предложении where сгенерированного sql, но также и любые поля внешнего ключа. Это раздражает, так как это означает, что я не получаю истину последним в семантике побед и мне нужно знать, какое значение имеет поле fk перед обновлением, или я получаю исключение параллелизма.

Мне известно, что это может быть закорочено путем включения поля внешнего ключа, а также свойства навигации объекта. Я хотел бы избежать этого, если это возможно, поскольку это не очень чистое решение.

Мне просто интересно, есть ли другой способ переопределить это поведение? Это больше похоже на ошибку, чем на функцию. У меня нет проблем с выполнением проверок параллелизма, если я даю указание сделать это, но неспособность полностью обойти параллелизм является чем-то вроде помехи, поскольку существует много допустимых сценариев, где это не нужно

1 Ответ

0 голосов
/ 18 мая 2012

Я не уверен на 100%, что это сработает, но мне самому было любопытно, и я думаю, что мог бы найти решение.

Что делать, если вы установите атрибут [ConcurrencyCheck] в поле, которое является неизменным (в моем случае я использовал идентификатор (первичный ключ). Поскольку он никогда не будет изменен, он никогда не вызовет исключение параллелизма и, следовательно, затенит вашу запись.

Повернись и посмотри, решит ли это твою проблему.

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