Обновление одного поля с помощью Linq для SQL - можно ли просто отключить всю логику параллелизма? - PullRequest
1 голос
/ 08 июня 2009

Да, эта тема освещена в сотнях постов по всей сети, и все же я до сих пор не нашел ту, которая не включает загрузку всей сущности (иногда сериализованной) только для изменения одного поля. Некоторые предполагали, что изменение «Проверка обновлений» для всех свойств объектов решит эту проблему, но до сих пор я получаю исключения ChangeConflictException независимо от моего подхода. Можно ли просто сказать L2S перестать быть моей няней и позволить мне обновить?

var context = new MyDataContext();
var person = new Person() {Id = 5};
person.LastName = "Johanssen";
context.People.Attach(person);
context.SubmitChanges();

Большое спасибо за понимание!

Джеймс

1 Ответ

2 голосов
/ 08 июня 2009

Хорошо, я недостаточно внимательно смотрел Visual Studio. Хотя в конструкторе я изменил все свои поля на UpdateCheck.Never, когда я посмотрел файл MyModel.desinger.cs, чтобы увидеть сгенерированные объекты, этот атрибут не был добавлен в большинство полей. Когда я добавил атрибут, обновление прошло, и все было хорошо.

Если вам нужно добавить этот атрибут сразу ко многим полям, вот замена регулярного выражения VS, которая добавит его ко всем столбцам в файле. Я НАСТОЯТЕЛЬНО предлагаю сначала заархивировать файл (или создать его резервную копию), чтобы убедиться, что вы не потеряете всю свою тяжелую работу в первую очередь. И если у вас уже есть атрибут, установленный для некоторых, он удвоит их (таким образом, вторая замена ниже).

Find and Replace (Regular Expressions on)
\[Column{.*}\)\]
[Column\1, UpdateCheck=UpdateCheck.Never )]

Find and Replace (Regular Expressions off)
UpdateCheck=UpdateCheck.Never, UpdateCheck=UpdateCheck.Never  
UpdateCheck=UpdateCheck.Never
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...