LINQ更新问题与SQL更新相比需要帮助

问题描述

| 在下面的代码中,我使用TryUpdateModel通过ID更新了IndexOrder。以下更新命中DB 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更新表达式? 我这里不是在谈论性能。     

解决方法

        在LINQ-to-SQL中,您可以使用
Attach
。以下代码将更新ID为1的exisitin菜单项的
Order
值。
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到实体,请查看附加和分离对象。 模拟是ObjectSet.Attach方法。