Как сделать запросы UPDATE в LINQ to SQL? - PullRequest
0 голосов
/ 27 марта 2010

Мне нравится использовать LINQ to SQL. Единственная проблема в том, что мне не нравится способ обновления таблиц по умолчанию.

Допустим, у меня есть следующая таблица со следующими столбцами:

ID (primary key), value1, value2, value3, value4, value5

Когда мне нужно что-то обновить, я звоню

UPDATE ... WHERE ID=@id

LINQ to SQL звонки

UPDATE ... WHERE ID=@id and value1=@value1 and value2=@value2 and value3=@value3 and value4=@value4 and value5=@value5

Я могу переопределить это поведение, добавив

UpdateCheck=UpdateCheck.Never

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

Ответы [ 4 ]

2 голосов
/ 27 марта 2010

Я смущен этим утверждением:

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

Под "GUI" вы имеете в виду конструктор Linq to SQL? Поскольку в листе свойств для каждого участника есть свойство «Проверка обновления», которое можно установить на «Никогда». Если вы вручную редактируете файл .designer.cs, не делайте этого, вместо этого измените настройку Update Check в конструкторе фактический .

Дизайнерский экран http://img29.imageshack.us/img29/7912/updatecheckdesigner.png

Обратите внимание: «способ обновления по умолчанию», используемый Linq для SQL, называется оптимистичный параллелизм и является способом предотвращения конфликтующих обновлений от нескольких пользователей. Если вы отключите это с помощью описанного выше метода, вы должны быть готовы к тому, что если два пользователя одновременно открывают одну и ту же запись, изменения второго пользователя будут перезаписаны изменениями первого пользователя без предупреждения или подтверждения , Будьте уверены, что это именно то поведение, которое вы действительно хотите.

0 голосов
/ 28 марта 2010

Так работает Linq.Почему вам не нравится это поведение обновления?

Читайте о оптимистическом параллелизме

http://msdn.microsoft.com/en-us/library/bb399373.aspx

0 голосов
/ 27 марта 2010

Сам столкнулся с этим. Хитрость заключается в том, чтобы изменить способ генерации DBML, например, используя l2st4 . Затем вы можете установить это надоедливое свойство UpdateCheck, чтобы оно никогда не изменялось путем изменения шаблона.

0 голосов
/ 27 марта 2010

К сожалению, нет, нет. Вы должны редактировать DBML вручную после того, как он сгенерирован (или обновлен), что является проблемой (или используйте Дизайнер, как уже упоминалось в другом ответе).

Когда я последний раз использовал L2S в проекте, я написал быструю утилиту, которая запускала постгенерацию и исправляла ее, но это ненужная боль, которая (с) не должна требоваться ИМХО.

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