【发布时间】:2011-03-06 16:00:41
【问题描述】:
我有一个用 php 编写的宠物项目。我的代码所做的一项工作是加载一堆 csv 文件并将它们写入具有自动生成的主键和多部分唯一键的 MySQL 表。我无法控制,并且可以检查某些文件是否已处理,因此唯一密钥很方便。我使用INSERT IGNORE 将数据插入到表中,当我尝试插入已经存在的数据并且一切正常运行时,它会静默失败。
现在,我正在尝试使用 LINQ To Entities 在 C# 4 中创建类似的项目,但是当我尝试从已经在表中的文件中调用 ObjectContext.SaveChanges() 方法时,UpdateException 被抛出,SqlClient.SqlException 作为内部例外。一种解决方案是将Ignore Duplicate Keys = Yes 添加到索引中,它有点工作,但是
- 这是在服务器上而不是在客户端上更改
- 使用现有索引更新时引发 OptimisticConcurrencyException
有没有简单优雅的方法来完成那些不涉及数据库更改的 L2E 插入???
【问题讨论】:
-
我建议在保存更改之前检查关键字段的唯一性。
标签: c# entity-framework c#-4.0 linq-to-entities