0
我具備的功能如下圖所示:傳遞參數的方法
public IEnumerable<Member> Members(Member models)
{
string query = "SELECT a.[Name], b.[MemberStatus] FROM [Member] a WITH (NOLOCK) INNER JOIN [MemberStatus] b WITH (NOLOCK) ON a.[ID] = b.[ID]";
using (IDbConnection conn = new SqlConnection(ConfigurationManager.AppSettings["MyConnection"]))
{
conn.Open();
return conn.Query<Member, MemberStatus, Member>(query, (member, memberStatus) =>
{
member.MemberStatus = memberStatus;
return member;
}).ToList();
}
}
,現在我想打一個泛型函數可以被重複使用,因爲它會超過1,代碼爲類似那樣(來自矮胖的地圖)。
這裏是我做上面的代碼可重用的代碼:
public TReturn Queries<TParent, TChild, TReturn>(string query, Func<TParent, TChild, TReturn> map, object arguments)
{
using (IDbConnection conn = new SqlConnection(ConfigurationManager.AppSettings["MyConnection"]))
{
conn.Open();
return conn.Query<TParent, TChild, TReturn>(query, (parent, child) =>
{
// not sure on how to pass from here
return parent;
});
}
}
,我還可以在會員通話功能是這樣的:
public IEnumerable<Member> Members(Member models)
{
string query = "SELECT a.[Name], b.[MemberStatus] FROM [Member] a WITH (NOLOCK) INNER JOIN [MemberStatus] b WITH (NOLOCK) ON a.[ID] = b.[ID]";
return Helper.Queries<Member, MemberStatus, Member>(query, (member, memberStatus) => member.MemberStauts = memberStatus);
}
但我不真的很肯定如何通過member.MemberStatus
或member.MemberStatus
以外的其他變量到Queries
函數,我做了..要麼是QueryMultiple
或Query
在Dapper
我的做法是正確的嗎?或任何其他建議?
感謝
您可以使用dapper擴展使其更通用。請參閱存儲庫模式:https://stackoverflow.com/a/45460483/5779732 –