私はEntity Frameworkコードを持つMVC Webアプリケーションプロジェクトを最初に持っています。このプロジェクトでは、ジェネリックリポジトリと作業単位パターンを使用します。私はまた、get-list
メソッドでリストを取得するためのストアドプロシージャを使用したいと思います。Entity Frameworkでストアドプロシージャ+リポジトリ+作業単位のパターンを使用するにはどうすればよいですか?
ジェネリックリポジトリと作業単位パターンでストアドプロシージャを使用するにはどうすればよいですか?あなたの一般的なリポジトリが
public IEnumerable<T> ExecWithStoreProcedure(string query, params object[] parameters)
{
return _context.Database.SqlQuery<T>(query, parameters);
}
を追加して、あなたは私が作成し、@sunilによって答え、その上に私のコメントにエラボレーション
IEnumerable<Products> products =
_unitOfWork.ProductRepository.ExecWithStoreProcedure(
"spGetProducts @bigCategoryId",
new SqlParameter("bigCategoryId", SqlDbType.BigInt) { Value = categoryId }
);
は、コードの最初のアプローチは、まだストアドプロシージャを使用してサポートしていません - それはアウト –
@marc_s今年後半ことになってEntity Frameworkのバージョン6に来るということだ機能です。正確には、 *マッピング*ストアドプロシージャを.NETメソッドに対応していません。 *それらを使用し、 'SqlQuery'(パラメータとしてSP名を持つ)の呼び出しをリポジトリメソッドにラップすることは可能です(http://msdn.microsoft.com/en-US/data/jj592907)。完璧な方法ではありませんが、可能です。 – Slauma
@Slauma - 実際には、EFモデルをストアドプロシージャにマッピングすることをサポートしていないと思います。これはv6で取り上げられています。ストアドプロシージャをオブジェクトにマップすることができ、そのsprocをメソッドにマップすることができます(つまり、ラップします)。しかし、これは主に最初のコードの手作業です。 –