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

C# Dapper:如何在内部类模型中映射表中的列?,c#,dapper,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;

我有一个带有字段的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对象?

您可以使用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();
}
var result=newlist();
var q=“选择null作为S,选择first\u name作为FirstName,
姓作为姓,名作为姓,
姓氏作为tbl_人员的姓氏”;
使用(var con=newsqlconnection(“yourconnstrighere”)
{
结果=con.Query(q,(p,n,ne)=>
{p.Name=n;p.NameEng=ne;返回p;},
splitOn:“FirstName,FirstName”).ToList();
}

注意:您需要将
null作为S
作为一个伪列,即使您没有在类中使用它。如果您不提供它,您当前的类结构(没有非复杂类型属性)将出现错误。

您尝试了什么?sql查询结果集的结构是什么样子的?列是什么?