Вопрос об обновлении LINQ по сравнению с обновлением SQL.нужна помощь - PullRequest
3 голосов
/ 12 июня 2011

В приведенном ниже коде я обновляю IndexOrder по идентификатору, используя TryUpdateModel.Ниже обновление попало в БД 2 раза.После извлечения текущей записи по Id, чем при обновлении одной строки.

Я использую LINQ To EF

 foreach (var i in indexArraay)
            {
                SubMenu existingMenu = _menu.SubSingle(Int32.Parse(i.id.ToString()));
                existingMenu.IndexOrder = string.IsNullOrEmpty(i.index.ToString()) ? 0 : Int32.Parse(i.index.ToString());
                TryUpdateModel(existingMenu);
                _menu.Add();
            }

В SQL мы не делаем это, как в приведенном ниже выражении.

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Я где-то не прав или есть лучший способ написать выражение обновления LINQ?

Я не говорю о производительности здесь.

1 Ответ

0 голосов
/ 12 июня 2011

В LINQ-to-SQL вы можете использовать Attach для этого.Приведенный ниже код обновит значение Order для пункта меню exisitin с идентификатором 1.

int myId = 1;
int newOrder = 10;

using (var dataContext = new DataContext("..."))
{
    var table = dataContext.GetTable(typeof(Type));
    var menuItem = new MenuItem { Id = myId };
    table.Attach(menuItem);
    menuItem.Order = newOrder;
    dataContext.SubmitChanges();
}

[Изменить]

Для LINQ-to-Entities посмотритев Присоединение и отсоединение объектов .

Аналогом является ObjectSet.Attach Method .

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