使用EntityFramework插入时,防止同步标识列

时间:2012-08-28 20:34:19

标签: entity-framework-4

使用EF4 / w SQL Server 2008。

以下代码(针对具有PK的表,定义为Int IDENTITY(1,1)

ctx.AddObject(GetEntitySetName(), newEntity);
ctx.SaveChanges();

分析SQL时的结果是插入语句,后面是对我插入的表的查找:

SELECT ID FROM Table
WHERE ID = @@ScopeIdentity AND @@RowCount > 0

有没有办法阻止EntityFramework撤回Identity种子?我的.Net代码中不需要ID,在高容量情况下,这似乎是一种浪费的操作。

另外,有没有办法告诉EF改变执行此操作的方式?使用的策略违反了Microsoft在此缺陷报告中提出的建议:

http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=328811

1 个答案:

答案 0 :(得分:0)

使用数据库生成的密钥(标有StorgeGeneratedPattern.Identity的属性)时,无法更改此行为。 EF需要插入实体的实际键值,因此避免查询的唯一方法是根本不使用数据库生成的键并在应用程序中自行处理它。