【问题标题】:I need to Update if exist else Insert with Linq to SQL如果存在,我需要更新,否则使用 Linq 插入 SQL
【发布时间】:2013-11-23 22:24:28
【问题描述】:

如果存在则更新行或不存在则添加行的最有效方法是什么?

我正在使用 Linq to SQL,并且已经阅读了 few posts,但没有一个是最新的,或者在没有多个数据库调用或旧框架的情况下解决它。目前我只是插入,如果有重复的语句会给出错误,Violation of PRIMARY KEY constraint

我需要它快速的原因是它最终会达到数千条记录。

【问题讨论】:

  • 我强烈建议使用实体框架而不是 LINQ to SQL。
  • 有什么原因吗?设置起来并不难,到目前为止我已经完成了很多工作。
  • 如果没有数据库往返,您将无法执行此操作,除非您提前获取所有 PK 值,检查内存并确保在检查之后和提交之前并发用户不会添加重复项.我碰巧给出了类似的答案here
  • 此表仅由单个函数写入,并且仅按计划调用该函数。所以我不必担心比赛条件(对吧?)。
  • 另外,如果您担心性能,您可以通过不使用 ORM 而使用纯 SQL 来执行此特定操作,从而将您的速率提高 10 到 20 倍。它在需要的地方产生了真正的影响。

标签: c# linq


【解决方案1】:

知道为此需要往返调用,我加载了表的主键值。然后在调用db.SaveChanges之前添加了以下代码:

if (checklist.Contains(tempstats))
             {
                db.Stats.Add(tempstats);
             }

【讨论】:

    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多