0

エンティティ クラスの T4 コード生成を微調整する方法とEntityModel.tt、おそらくEntityModel.Context.tt(私は POCO クラスを使用しています) ストアド プロシージャを使用するエンティティのクエリを強制する方法についてのガイダンスを探しています (私は既に EntitySQL.tt をすべて生成していますストアド プロシージャ)

たとえば、次のようなもの

context.MyEntities().Single(c => c.id == 5)

SQL を生成しませんが、SP の「sp_GetMyEntities」を呼び出します。

同じ結果を達成するためのより良い戦略があれば、それについて学びたいと思います.

更新 この時点で、CRUD の READ 部分にのみ関心があります。そして、結合はありません。ID による 1 つのエンティティの単純な読み込み。理論的には、ロードされたアイテムの ID をパラメーターとして受け入れるように SP を設定して、テーブル全体のロードを回避できます (この場合、.Single(c => c.id == 5)パーツが必要になり、オブジェクトに ID が提供されMyEntitiesます。

これは「データベースファースト」の実装用です

4

1 に答える 1

1

Code first は、ストアド プロシージャへのマッピングをサポートしていません。Model first および Database first フローはストアド プロシージャへのマッピングをサポートしますが、ストアド プロシージャは構成可能ではないため、使用したい方法では機能しません (つまり、.Single() を実行すると、フィルタリングはせいぜいクライアントで行われます)。データベース内 - パフォーマンス上の理由から、1 つのエンティティを選択するためだけにデータベース全体をクライアントに持ち込むのはおそらく望ましくないため、データベース サイトでフィルタリングを実行する必要があります)。.NET Framework 4.5 に同梱されている Entity Framework 5 のコア ライブラリは、コンポーザブルな TVF をサポートしており、目的を実現できるはずですが、コード ファーストのシナリオでは実現できません。

于 2012-05-18T23:37:51.817 に答える