2016-10-31 23 views
2

大規模なASP.NET MVC5アプリケーションでは、リポジトリパターンを実装しています。テーブルやビューはすべて問題なく機能しますが、メソッドのようにインポートされるプロシージャ関数とプロシージャのEF6リポジトリパターン実装のMVC5

_context.spGetSomething(1,"name"); 

私が見つけた関数とプロシージャのすべてのリポジトリは、sqlコマンドまたはsqlクエリを使用していました。輸入手続きの良い練習の例はありますか?

このような私のリポジトリを見今

interface IRepository<T>:IDisposable 
{ 
void Delete(int ID); 
void Update(T entity) 
void Insert(T entity) 
IQueryable Select() 
} 



public abstract class AbstractRepository<T>:IRepositori<T> 
{ 
     protected MyDbContext context; 
     public AbstractRepository(MyDbContext db) 
     { 
     context= db; 
     } 

    //interface implementation 
} 

とコントローラで

public MyController:Controller 
{ 
private IRepository<MyModel> _repository; 
MyController() 
{ 
_repository= new MyRepository(dbcontext); 
} 
// some actions 

} 

答えて

0

私たちは、ストアドプロシージャのための特別な/余分InfoEntityとInfoRepositoryを使用して、このconvensionは素晴らしい作品。私たちのBaseRepositoryには2つのメソッドがあります:SelectInfoとListInfo。

しかし、DapperをORMとして使用しており、EntityFrameworkで期限切れになっていません。

その他:UnityのようなIoCコンテナを使用して、コントローラのコンストラクタ経由でRepositoryインスタンスを挿入することができます。データアクセスレイヤーとベターテスト可能です。