Dapper:如何在内部类模型中映射表中的列?

时间:2016-09-27 15:44:35

标签: c# dapper

我的sql表tbl_persons包含字段:first_name,last_name,first_name_eng,last_name_eng。

一个模特:

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对象?

1 个答案:

答案 0 :(得分:0)

您可以使用Dapper的Multi-Mapping 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作为虚拟列。如果不提供,则会出现当前类结构的错误(没有非复杂类型属性)