Отображение с помощью Dapper каскадных объектов - PullRequest
0 голосов
/ 29 октября 2018

Я рефакторинг старого запроса, сделанного с EF, который занимает так много времени. Мне было интересно с Даппером, могу ли я автоматически наносить на карту такие объекты

public class Chest
{
  public Item Item {get;set;}
}

public class Item
{
   public IList<Property> Properties {get;set;}
}

public class Property
{
    public int Id {get;set;}
    public string Description {get;set;}
}

Есть ли способ, которым я могу получить все эти предметы, как я бы сделал с EF?

Я видел Запрос и так далее, но я не понимаю, соответствует ли он случаю

1 Ответ

0 голосов
/ 29 октября 2018

Ваша модель довольно проста, так как существует только 1 коллекция - IList<Property>, давайте предположим, что ваш запрос Select Id, Description from PropertyTable, затем, используя Dapper, вы можете сделать следующее:

IList<Property> PropertyList = conn.Query<Property>("Select Id, Description from PropertyTable").ToList();

После этого его простое назначение:

Chest chest = new Chest{Item = new Item{Properties = PropertyList}};

Это все еще требует дополнительного присваивания, так как из Dapper вы получите IEnumerable<T> в результате, может быть Dapper Extension, который может напрямую заполнить объект Chest, если вы предоставите явное сопоставление объекта, хотя, на мой взгляд, его не требуется, так как решение простое

...