2016-09-27 9 views
-1

私は、フィールドfirst_name、last_name、first_name_eng、last_name_engを持つSQLテーブルtbl_personsを持っています。Dapper:内部クラスモデルのテーブルから列をマップする方法は?

とモデル:

public class PersonName 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 
} 

public class Person 
{ 
    public PersonName Name { get;set; } 

    public PersonName NameEng { get;set; } 
} 

どのように私はtbl_personsからPersonオブジェクトに行をマッピングすることができますか?

+0

何を試していますか? – tym32167

+0

SQLクエリ結果セットの構造はどのように見えますか?列は何ですか? – Shyju

答えて

0

DapperのマルチマッピングAPIを使用できます

これは正常に動作します。

var result = new List<Person>(); 
var q = "SELECT null as S, first_name as FirstName, 
         last_name AS LastName,first_name_eng AS FirstName, 
         last_name_eng AS LastName FROM tbl_persons"; 
using (var con = new SqlConnection("YourConnStringHere") 
{ 
    result = con.Query<Person, PersonName,PersonName, Person>(q, (p,n,ne) => 
         { p.Name = n; p.NameEng =ne; return p; }, 
      splitOn: "FirstName,FirstName").ToList(); 
} 

注:あなたは、あなたのクラスでそれを使用していないにもかかわらず、ダミー列としてnull as Sを必要としています。それを指定しないと、現在のクラス構造にエラーが発生します(非複合型プロパティはありません)

関連する問題