2016-06-16 3 views
2

두 가지 문제가 있습니다. 둘 다이 질문에 대답 할 수 있기를 바랍니다.도우미 및 저장 프로 시저

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; } 
} 

이게 가능합니까? 대소 문자를 구분하지 않기 때문에 등록 정보가 필드 이름과 일치하도록 제안 할 수 있으므로 전자 메일에서 UserEmail으로 변경하면되지만 작동하지는 않습니다. 내가 할당이 사람가있는 클래스가 있습니다 또한

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