1

全体的なコンテキスト内の関数ではなく、その特定のテーブル用に生成されたエンティティ内の関数としてテーブルに論理的に関連するストアド プロシージャをマップする方法を探しています。

例として、既存の銀行データベースから edmx を生成し、コンテキストとテーブルに対応するいくつかのエンティティを取得しました。Account、Transactions、Address などのテーブルがあり、アカウントの現在の残高を返すストアド プロシージャがあるとします。このストアド プロシージャを、コンテキストではなく Account エンティティにマップしたいと考えています。これにより、Context.GetBalance() の代わりに Account.GetBalance() を呼び出すことができます。

これはエンティティフレームワークで可能ですか? 私は多くの検索を行い、msdn でいくつかの記事やブログを読みましたが、これに対する解決策が見つかりませんでした。

4

1 に答える 1

1

いいえ、エンティティのコンテキストで公開されているメソッドを手動でラップしない限り、それは不可能です。これにより、エンティティは永続性を認識し、EFに依存するようになります。これは、現在、設計の正反対と見なされています。

EF残高に関しては、アカウントエンティティのプロパティである必要があり、残高の取得は、アカウントのリロードまたはアカウントセット/コンテキストでのプロジェクションクエリ(またはプロシージャ)の実行を意味する必要があります。クエリは、コンテキストおよびストアドプロシージャからも実行されます。

于 2013-01-07T09:08:09.133 に答える