2016-06-16 3 views
2

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を変更することはできますが、そうではありません。私は2 人に割り当てられを持つクラスを持っている:

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です。


2番目の例は難しいです。どの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