J'ai la fonction comme ci-dessous:passer les arguments à la méthode
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();
}
}
et maintenant je veux faire une fonction générique qui peut être réutilisable, car il sera plus de 1 que le code est similaire comme ça (carte de dapper).
Voici le code que je fais le code ci-dessus qui peut être réutilisable:
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;
});
}
}
Et je peux appeler fonctionner comme membres ceci:
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);
}
Mais je ne suis pas vraiment sûr sur la façon de passer le member.MemberStatus
ou les autres variables autres que member.MemberStatus
à la fonction Queries
que j'ai fait .. Soit il est QueryMultiple
ou Query
dans Dapper
Est-ce que ma façon de le faire est correcte? ou d'autres suggestions?
Merci
Vous pouvez rendre cela plus générique en utilisant les extensions dapper. Reportez-vous au modèle de référentiel ici: https://stackoverflow.com/a/45460483/5779732 –