2015-04-28 97 views
0

我有一个SQL Server中有一个主键列的表。如果我将一个新的更新输入到一个表中,其主键已经作为一个条目存在,我应该在插入之前删除以前的条目,还是有办法覆盖现有的条目?如果主键已经存在,如何将插入覆盖到Sql Server表中?

+3

使用'merge'而不是'insert'。 https://technet.microsoft.com/en-us/library/bb522522%28v=sql.105%29.aspx –

+0

这似乎是正确的答案,绝对帮助我! – tufelkinder

回答

0

如果您使用.net的实体框架去删除然后插入,因为这不会混淆在内存中保存的EF对象标识符。

+0

有没有一个最佳的方法来做到这一点。或者我应该这样做:选择检查它是否存在,删除它是否存在,继续插入? – ab11

+0

如果您使用实体框架,最简单的方法是通过键获取对象。正如你所说,如果它存在删除它,然后去插入。这不会是最佳的方式,因为会有2个数据库调用(1来获取另一个来插入),更不用说对象序列化和转换了。最佳方式是@Daniel E.建议并使用合并语句,您可以将其放入存储过程并以任何方式在Entity框架中使用。你只会有1个数据库调用。 – sarin

相关问题