代码之家  ›  专栏  ›  技术社区  ›  napi15

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

  •  0
  • napi15  · 技术社区  · 8 年前

    我有一门课叫 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 已加载结果和行大小,但当我将光标放在 学生信息 ,属性, Name , Age , Adress 是空的

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

    foreach ( var student in studentsInfo )
    {
     console.writeline(sutdent.age);
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Marc Gravell    8 年前

    不确定这会有帮助,但它 看起来像 你所拥有的应该有用。我倾向于使用SQL Server,但ADO。网络层为 主要地 同样,我尝试了以下案例:

    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
    

    所以我的主要想法是:查询是否输出您认为它输出的内容?数据是你认为的吗?还有:你确定吗 age 是一个 string ?