0

使用 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

4

1 回答 1

0

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

于 2012-08-29T09:02:52.017 回答