2016-06-16 3 views
2

У меня есть 2 вопроса, надеюсь, на оба ответа можно ответить в этом вопросе. У меня есть модель, как это:Dapper и хранимые процедуры

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Email { get; set; } 
} 

Теперь предположим, что мой хранимые процедуры (которые не могут быть изменены) возвращает first_name, LastName и USEREMAIL. Я хотел бы использовать некоторый метод (надеюсь, аннотации данных), чтобы отобразить поля в свойствах. Что-то вроде этого:

public class Person 
{ 
    [Column(Name = "first_name")] 
    public string FirstName { get; set; } 
    [Column(Name = "lastName")] 
    public string LastName { get; set; } 
    [Column(Name = "UserEmail")] 
    public string Email { get; set; } 
} 

Возможно ли это? Вы можете предложить убеждаться, что свойства соответствуют названиям полей, так как они не чувствительны к регистру, поэтому изменение Email до UserEmail будет работать, но это не по этой причине. У меня есть класс, который имеет 2 Person отведенного ему:

public class Example 
{ 
    public string Name { get; set; } 
    public Person Mother { get; set; } 
    public Person Father { get; set; } 
} 

Кроме того, я не могу использовать:

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; 

, потому что, кажется, игнорируют все другие свойства, а потом. Любая помощь была бы оценена как обычно :)

ответ

0

Вы можете сделать это с помощью цепочки.

static Tortuga.Chain.SqlServerDataSource DS = new Tortuga.Chain.SqlServerDataSource (connectionString); 

var people = DS.Procedure("procName", new { @Param1 = x, @Parm2 = y}).ToCollection<Person>().Execute(); 

По умолчанию присвоены атрибуты Column.


Ваш второй пример сложнее. Вам нужны префиксы, чтобы он знал, с каким именем FirstName отправляется свойство.

public class Example 
{ 
    public string Name { get; set; } 
    [Decompose("Mother_")] 
    public Person Mother { get; set; } 
    [Decompose("Father_")] 
    public Person Father { get; set; } 
} 

SELECT x.nName, m.FirstName as Mother_FirstName, f.FirstName as Father_FirstName, [...] 
FROM people x 
LEFT JOIN people f ON x.FatherKey = f.Key 
LEFT JOIN people m ON x.MotherKey = m.Key 
Смежные вопросы