代码之家  ›  专栏  ›  技术社区  ›  Jader Dias

如何使用Linq to SQL进行更新?

  •  13
  • Jader Dias  · 技术社区  · 16 年前

    public static void Update(IEnumerable<Sample> samples
        , DataClassesDataContext db)
    {
        foreach (var sample in db.Samples)
        {
            var matches = samples.Where(a => a.Id == sample.Id);
            if(matches.Any())
            {
                var match = matches.First();
                match.SomeColumn = sample.SomeColumn;
            }
        }
        db.SubmitChanges();
    }
    

    我确信上面的代码不是正确的方法,但我还想不出其他方法。你能展示一个更好的方法吗?

    2 回复  |  直到 16 年前
        1
  •  24
  •   Jacob Proffitt    16 年前

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

    在这种情况下,Linq to SQL使用密钥来匹配和更新记录,只要您的密钥保持同步,就可以了。

        2
  •  7
  •   Thorarin    16 年前

    如果要避免这种情况,请编写一个执行所需操作的存储过程并将其添加到模型中。