我在應用程序中使用Dapper ORM。我創建了一個使用Dapper方法的接口,以便快速瀏覽在此應用程序中使用Dapper的哪些功能,並且可以通過實現它輕鬆地由其他ORM替換。使用接口驅動方法或靜態輔助方法
public interface IDapperRepository
{
IEnumerable<T> GetAll<T>(string query, object cmdParams = null, CommandType cmdType = CommandType.Text) where T : class;
T GetById<T>(string query, object cmdParams = null, CommandType cmdType = CommandType.Text) where T : class;
}
class DapperRepository : IDapperRepository
{
public IEnumerable<T> GetAll<T>(string query, object cmdParams = null, CommandType cmdType = CommandType.Text) where T : class
{
//implementation
}
public T GetById<T>(string query, object cmdParams = null, CommandType cmdType = CommandType.Text) where T : class
{
//implementation
}
}
從DAL層:
public class UserRep : IUserRep
{
private readonly IDapperRepository _iDapperRepository;
public UserRep()
{
_iDapperRepository = new DapperRepository();
}
public IEnumerable<UserBO> GetAll()
{
return _iDapperRepository.GetAll<UserBO>("select * from users");
}
//Other methods
}
在用戶列表頁面,_iUserRep.GetAll()獲取控制器調用。
從上面的代碼中,通過調用_iUserRep.GetAll()或存儲庫中的類的任何其它方法,DapperRepository類被實例化。我的問題是因爲我在DapperRepository類中只有實用程序方法,刪除IDapperRepository並使用「static」方法將DapperRepository修改爲「static」是一個好主意,這樣我就可以在不實例化的情況下調用方法。我想知道這樣做是否會有任何表現收益。
此外,任何輸入,以改善這樣的設計是表示讚賞。
你提到*控制器*,你在ASP.MVC應用程序工作嗎? – jwaliszko
是的,它是一個MVC應用程序。由於它更多的是設計問題,我沒有詳細說明。 – Sunny