Использование LINQ to SQL для обновления / установки - PullRequest
1 голос
/ 02 декабря 2010

Итак, если я использую этот запрос напрямую или с помощью db.ExecuteCommand(), все будет работать нормально;

update Market..Area set EndDate = NULL where ID = 666 and NID =1 and Code = 36003

Тем не менее, я не могу сделать это в LINQ to SQL, я пробовал несколько разных методов, которые, похоже, все должны работать, вот пример одного:

var s= db.Area.Single(s => s.ID == 666 && s.Code == 36003 && s.NID == 1);
s.EndDate = null;
db.SubmitChanges();

Я не знаю, что еще можно попытаться заставить это работать.

EDIT

Я только пытаюсь отредактировать ОДИН элемент

Ответы [ 4 ]

1 голос
/ 02 декабря 2010

Есть ли первичный ключ, определенный в таблице Area? Linq 2 SQL не будет обновлять таблицу без определения первичного ключа. (И, насколько я помню, он молча провалится).

0 голосов
/ 02 декабря 2010

Нет встроенного метода для выполнения пакетных обновлений.Но вы можете выбрать некоторые пакетные расширения из этого блога .

0 голосов
/ 02 декабря 2010

Ваш синтаксис кажется правильным.Единственное, о чем я могу думать, что может вызвать сбой, - это если вы пытаетесь выполнить несколько обновлений в одном и том же контексте данных.Попробуйте это:

using (DataContext db = new DataContext())
{
    var s = db.Area.Single(s => s.ID == 666 && s.Code == 36003 && s.NID == 1);

    s.EndDate = null;
    db.SubmitChanges();
}
0 голосов
/ 02 декабря 2010

Хотите обновить более одного элемента?Даже не можешь написать что-то вроде:

IQueryable<Area> iArea =
    from s in db.Area
    where s.ID == 666 && s.Code == 36003 && s.NID == 1
    select s;

iArea.ToList().ForEach(item => { item.EndDate = null; });

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