0

現在、Entity Framework 4.1 (コードファースト) と SQL Server CE 4.0 を使用するアプリケーションに取り組んでいます。私が SQL Server CE 4.0 で本当に気に入っている新機能の 1 つは、計算値です。

しかし、古いデータを新しいデータ ストア システム (約 50000 エントリ) にインポートするときに、パフォーマンスの問題が発生します。これは、これに対する私の2番目の実装です。最初のバージョンでは、Entity Framework 4.0 と SQL Server CE 3.5 が使用されました。しかし、これらの実装には大きなパフォーマンスの違いがあります。コードの最初の実装ではエントリのインポートに約 1 時間かかりますが、他の実装では数分しかかかりません。

ほとんどの時間はSaveChangesメソッドに費やされます。[DatabaseGenerated(DatabaseGeneratedOption.Identity)]問題を属性まで追跡しました。[DatabaseGenerated(DatabaseGeneratedOption.None)]独自の生成キーを使用して実装すると (簡単な回避策として)、パフォーマンスは最初の実装のレベルに戻ります。

これは既知の問題ですか? このパフォーマンスの問題を解決する方法はありますか? または、独自のキーを生成するのが道ですか?

4

2 に答える 2

0

アプリのリフトタイムの間、ObjectContext / 接続を開いたままにします。EF は一括挿入には理想的ではありません。パフォーマンスを最大にするために SqlCeResultSet を使用してください。

于 2011-07-10T21:11:08.823 に答える
0

回避策として、「独自のキーを生成する」方法を使用することにしました。キー生成に必要な機能を DBContext クラスに追加しました。

Microsoft がこの動作に何か変更を加えた場合は、自動生成に戻します。

于 2011-07-11T14:49:17.070 に答える