Как обновить Linq-To-SQL?

13
задан Jader Dias 13 August 2009 в 08:36
поделиться

2 ответа

Да, есть способ попроще. Намного проще. Если вы прикрепите свои сущности к контексту, а затем обновите (с выбранным KeepCurrentValues), Linq to SQL получит эти сущности с сервера, сравнит их и пометит как обновленные те, которые отличаются. Ваш код будет выглядеть примерно так.

public static void Update(IEnumerable<Sample> samples
    , DataClassesDataContext db)
{
    db.Samples.AttachAll(samples);
    db.Refresh(RefreshMode.KeepCurrentValues, samples)
    db.SubmitChanges();
}

В этом случае Linq to SQL использует ключи для сопоставления и обновления записей, так что пока ваши ключи синхронизированы, все в порядке.

24
ответ дан 1 December 2019 в 20:11
поделиться

С Linq2Sql (или Linq to Entities) нет возможности * обновить записи на сервере, не получив их сначала полностью, так что то, что вы делаете, действительно правильно.

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

Я не совсем уверен, что это был ваш предполагаемый вопрос:)

*: Есть несколько хаков вокруг этого используйте LINQ для создания оператора SELECT и каким-то образом преобразовать полученный оператор SELECT в UPDATE, но я бы не рекомендовал это.

7
ответ дан 1 December 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: