質問: 同じ文脈でコードとデータベースを最初に組み合わせる方法はありますか? EDMXファイルを編集する際には、大量の開発時にパフォーマンス上の問題が発生しています(保存には1.5分かかります)。私は非挿入/更新/削除UDF /ストアド`OnModelCreating`を、モデルファーストコードを自動的に生成するいくつかのカスタムT4テンプレートに`OnModelCreating`しましたが、EDMXが関与するときにOnModelCreatingを呼び出すことはできません。 私たちが検討した他の事柄は、何らかの理由で動かないでしょう: 1. エンティティの関係には多くの重複があるため、コードを複数のコンテキストに分離することはできません(合理的に)。このルートを後悔している人もかなり残っているようです。 2. 2つの異なるコンテキストを試しましたが、エンティティとUDFの間にかなりの数の結合があります。これは私たちの最後の希望かもしれませんが、私は本当にそれを避けたいと思います。 3. 残念ながら`IQueryable`多用してしまったので、Dapperに切り替えることはできません。 4. 私たちは完全にCode-Firstに行きましたが、サポートされていない(主に挿入/更新/削除ストアドプロシージャマッピングに関連する)EDMXで使用している機能があります。
回答: よく考え、徹底的な答えをいただき、ありがとうございます。 これらの他の回答の多くは、EFコード・ファーストのストアド・プロシージャ・マッピングが同じように動作すると想定していますが、それらは同じではありません。私はそれを見てから約6ヶ月が経過しているので、少し曖昧ですが、EF 6.3のコードの最初のストアドプロシージャでは、エンティティのすべての列を挿入/更新ストアドプロシージャに渡す必要があります。キー列を削除プロシージャに渡すだけです。パスできる列を選択して選択するオプションはありません。誰がレコードを削除したかを維持するという要件がありますので、単純なキー以外の追加情報も渡さなければなりません。 つまり、私がやったことは、T4テンプレートを使ってデータベースからいくつかの追加のメタデータを使ってEDMX / Context / Modelファイルを自動的に生成することでした。これにより、開発者の経験は1.5分から約5秒に短縮されました。 私の希望はEFストアドプロシージャのマッピングがEDMXでパロディーを達成するように改良され、コードファーストのマッピングをコード生成し、EDMXジェネレーションを完全に削除することだけです。