0

EF4 /w SQL Server 2008 を使用します。

次のコード (次のように定義された PK を持つテーブルに対してInt IDENTITY(1,1):

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

SQL をプロファイリングしたときの結果は、insert ステートメントに続いて、挿入先のテーブルに対するルックアップになります。

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 に答える