我有一个实体列表,我想将它们插入数据库。如果实体已经存在于数据库中,则需要跳过它。如果它在数据库中但具有不同的值,则需要更新。
除了对每个项目进行数据库调用之外,还有其他方法可以做到这一点吗?
我的计划是尝试插入,如果抛出键上的唯一约束异常,则进行更新。
在这种情况下不要使用实体框架。只需使用存储过程(如何取决于您使用 EF 的版本/方法,您可能需要扩展您的DbContext
或添加实体模型的映射)。
如果您使用的是 SQL Server,那么在您的存储过程中,请使用MERGE http://technet.microsoft.com/en-us/library/bb510625.aspx有效执行命令exactly您需要什么:如果不存在则插入,如果存在则更新。一切都在一个高效的 SQL 查询中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)