我有一个分布式应用程序,它通过WCF将数据发送到服务器以存储在数据库中(SQL Server 2008)。
通常这些数据是新的。所以我只是做InsertAllOnSubmit()。
但有时候,由于与运行客户端的手持设备之间存在通信问题,我得到了一个已经在服务器中的对象。
有没有办法说InsertOrUpdateAllOnSubmit?或者我是否必须更改我的代码以浏览每个对象并检查它是否在数据库中,然后根据需要进行插入或更新?我有很多对象类型,因此很快就会变得乏味:(
答案 0 :(得分:2)
更改数据库上的存储过程以处理重复插入。
答案 1 :(得分:2)
通常情况下,当您尝试进行任何类型的插入或更新并且存在冲突(例如已存在的对象)时,我将其视为场景的模式,然后一旦检测到冲突,您就会请求新数据并应用你的更新。这使您可以灵活地决定哪些更改获胜,或者以某种方式提示用户让他们查看新数据并确定他们的数据是否应该获胜。这一切都取决于背景和业务规则。
这主要适用于更新,但如果您考虑为什么插入发生这些冲突,您可能可以调整您的实现以使用并发检测和解析技术。 http://msdn.microsoft.com/en-us/library/bb399373.aspx