私は機能以下のように持っている:メソッドに引数を渡す
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以上になりますから、再利用可能な汎用的な機能を作りたいですそれと同じように(dapperからのマップ)。このように機能
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);
}
しかし、私はないです私が作ったQueries
の機能にmember.MemberStatus
やその他の変数member.MemberStatus
を渡す方法は本当に確かです。DapperのQueryMultiple
またはQuery
のいずれか
私のやり方は正しいのですか?その他の提案はありますか?
おかげ
これをより一般的な拡張機能を使用して作成することができます。リポジトリパターンはhttps://stackoverflow.com/a/45460483/5779732を参照してください。 –