如何使用 Dapper 将查询中的值加载到 myClass 属性

How to load values from query to myClass properties using Dapper

我有一个 class 叫 Students

    public class Students 
    {
     private string name ;
     private string age;
     private string adress;

    //Constructor 
    public Students (string name,string age,string adress)
    {
    this.name=name;
    this.age=age;
    this.adress=adress;
    }
  }

和一个查询 myQuery

Select h.name 
b.age,
v.adress 
FROM Tb.Students h 
INNER JOIN db.tb_1 d 
ON h.id= d.id 
 INNER JOIN db.TB_2 v
 ON d.id = v.id

现在当我 运行 这个 :

 Connection conn = new Connection();
        OracleConnection connection = conn.GetDBConnection();

 var studentsInfo= connection.Query<Students>(myQuery).ToList();

我注意到 studentsInfo 有结果并且加载了行大小但是当我将光标放在 studentsInfo 上时,属性,NameAgeAdress 为空

我错过了什么?如何将查询结果分配给我的属性,以便我可以像那样使用它们:

foreach ( var student in studentsInfo )
{
 console.writeline(sutdent.age);
}

不确定这是否有帮助,但看起来您所拥有的应该可以。我倾向于使用 SQL 服务器,但 ADO.NET 层 大部分 相同,我尝试了以下情况:

using Dapper;
using System.Data.SqlClient;
using System.Linq;

public class Students
{
    private string name;
    private string age;
    private string adress;

    public Students(string name, string age, string adress)
    {
        this.name = name;
        this.age = age;
        this.adress = adress;
    }
    public override string ToString() => $"{name}, {age}, {adress}";
}
static class P
{
    static void Main()
    {
        using (var connection = new SqlConnection("Data Source=.;Initial Catalog=master;Integrated Security=SSPI;"))
        {
            const string myQuery = "select 'fred' as [name], '27' as [age], 'somewhere' as [adress]";
            var studentsInfo = connection.Query<Students>(myQuery).ToList();
            foreach(var student in studentsInfo)
            {
                System.Console.WriteLine(student);
            }
        }
    }
}

它工作正常,输出:

fred, 27, somewhere

所以我的主要想法是:查询是否输出了您认为的结果?数据是你认为的那样吗?另外:你确定 agestring 吗?