代码之家  ›  专栏  ›  技术社区  ›  Vaccano

Linq to SQL是否可以根据需要进行插入或更新?

  •  4
  • Vaccano  · 技术社区  · 14 年前

    我有一个分布式应用程序,它通过WCF将数据发送到一个服务器,并存储在数据库中(SQL Server 2008)。

    通常这些数据是新的。所以我只做insertallonsubmit()。

    但是偶尔,由于与运行客户端的手持设备的通信异常,我会得到一个已经在服务器中的对象。

    有没有一种方法可以说是insertorupdateallonsubmit?或者,我是否需要更改代码来遍历每个对象并检查它是否在数据库中,然后根据需要进行插入或更新?我有很多对象类型,所以很快就会变得单调乏味:(

    2 回复  |  直到 14 年前
        1
  •  2
  •   Viv    14 年前

    更改数据库上的存储过程以处理重复项的插入。

        2
  •  2
  •   AaronLS    14 年前

    通常,当您尝试执行任何类型的插入或更新并且存在冲突(例如,对象已经存在)时,我将其视为场景的模式,然后一旦检测到冲突,就请求新数据并将更新应用于该数据。这允许您灵活地决定哪一个更改会获胜,或者以某种方式提示用户查看新数据并决定他们的数据是否会获胜。这完全取决于上下文和业务规则。

    这主要适用于更新,但是如果您考虑到这些冲突为什么会发生在插入中,那么您可能能够调整实现以使用并发检测和解决技术。 http://msdn.microsoft.com/en-us/library/bb399373.aspx