Écrire une requête Dapper pour les objets imbriqués

dapper orm

Question

J'ai une structure de code comme ci-dessous:

class Person
{
    Name PersonName;
    int Age;
}

class Name
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

Voici mon processus stocké qui remplit les données de la base de données.

Create Procedure SpGetAllPersons
As
Select FirstName, LastName, Age from Persons

Comment écrire la requête Dapper qui extrait toute la personne de la base de données?

Exemple:

List<Person> Persons = DbConn.Query<Person>("SpGetAllPersons", CommandType.StoredProcedure);

Réponse acceptée

Vous devez utiliser le multi-mappeur si vous souhaitez sélectionner des objets imbriqués.

Cela devrait fonctionner:

List<Person> persons = DbConn.Query<Name,Person,Person>
  ("SpGetAllPersons",
     (name,person) => {person.Name = name; return person;} 
     commandType: CommandType.StoredProcedure, 
     splitOn: "Age");

Le multi-mappeur peut renvoyer n'importe quel type, même un type d'agrégat non mappé à une table de base de données.

Il est important de fournir le splitOn si vous souhaitez diviser sur quelque chose qui n’est pas appelé id ou Id .




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi