Tenez compte du rôle-employé-adresse
Un employé ne peut avoir qu'un seul rôle mais peut avoir plusieurs adresses. Donc, utiliser split on n'est pas efficace car nous pouvons obtenir des doublons de rôles et d'employés. Nous pouvons utiliser plusieurs requêtes, mais je pense que s'il existe un moyen de capturer le rôle et l'employé ensemble dans un résultat et l'adresse dans un autre, ce serait mieux.
Dans ce cas, au lieu de renvoyer le rôle et l'employé séparément, nous pouvons directement joindre les deux en une seule requête et les diviser sur une colonne lors du mappage.
J'attends quelque chose comme ça
string query = "StoredProcedure";
using (var multi = connection.QueryMultiple(query, null))
{
empRole = multi.Read<Employee,Role>().Single().SplitOn("Id");
add = multi.Read<Address>().ToList();
}
Y a-t-il un moyen de faire comme ça en utilisant les deux techniques ensemble?
Correct, vous avez besoin d'un mappage un-à-plusieurs qui n'est pas pris en charge de manière native par Dapper, mais qui peut être facilement implémenté si la base de données que vous utilisez prend en charge JSON. Voici un article que j'ai écrit (avec des exemples de travail) qui explique comment le faire à l'aide de SQL Server / Azure SQL:
https://medium.com/dapper-net/one-to-many-mapping-with-dapper-55ae6a65cfd4