[英]Static member/class for generic repository
我有dapper通用存儲庫類,因為.net核心不支持分布式事務,所以我決定將已打開的連接對象發送給通用方法,而不是分別注入存儲庫中。
public class Repository<T> where T: class
{
protected readonly IComplianceConnection Connection;
public Repository(IComplianceConnection connection)
{
Connection = connection;
}
public IEnumerable<T> Get(string query, object arguments)
{
IList<T> entities;
using (var connection = Connection.OpenConnection())
{
entities = connection.Query<T>(query, arguments, commandType: CommandType.StoredProcedure).ToList();
}
return entities;
}
}
我需要將其更改為靜態類。以下是新的存儲庫。
public static class Repository<T> where T: class
{
public static IEnumerable<T> Get(this IDbConnection connection, string query, object arguments)
{
IList<T> entities;
entities = connection.Query<T>(query, arguments, commandType: CommandType.StoredProcedure).ToList();
return entities;
}
}
通用存儲庫的此靜態方法正確嗎? ..請建議我
我的理解是擴展方法作用於類的實例。 在您的Get()方法中,該實例是連接參數。 但是,似乎您正在覆蓋Get()方法中的連接實例。 這可能是不希望的。
您可能不想創建擴展方法。 也許您只想要一個可以接受IComplianceConnection參數的靜態方法。
public static IEnumerable<T> Get(IComplianceConnection complianceConnection, string query, object arguments)
{
IList<T> entities;
using (var connection = complianceConnection.OpenConnection())
{
entities = connection.Query<T>(query, arguments, commandType: CommandType.StoredProcedure).ToList();
}
return entities;
}
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.