2012-06-05 6 views
10

У меня есть клиент, который продиктовал, что я использую Dapper ORM, который я никогда раньше не использовал. У меня проблема с вложенными объектами. У меня есть основной класс (Location), который имеет класс объектов встроенного значения (Address). Два класса выглядеть следующим образом:Dapper ORM Вложенные объекты

class Location { 
    int Id; 
    string LocationName; 
    Address LocationAddress; 
} 

Class Address { 
    string Street; 
    string City; 
    string State; 
    string ZipCode; 
} 

SQL-:

SELECT Id, LocationName, Street, City, State, ZipCode FROM Locations 

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

ответ

9

Вы можете использовать параметр «splitOn» в своем запросе dapper.

var sql = "SELECT Id, LocationName, Street, City, State, ZipCode FROM Locations"; 
var conn = // your get connection logic here. 

using(conn) 
{ 
conn.Open(); 
var locations = conn.Query<Location,Address,Location>(sql, (location, address) => 
       { 
        location.LocationAddress = address; 
        return location; 
       }, splitOn: "Street"); 
} 

SplitOn требуется, если ваши объекты в наборе записей не «раскол» на колонке под названием «Id».