如何使用 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
上时,属性,Name
,Age
,Adress
为空
我错过了什么?如何将查询结果分配给我的属性,以便我可以像那样使用它们:
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
所以我的主要想法是:查询是否输出了您认为的结果?数据是你认为的那样吗?另外:你确定 age
是 string
吗?
我有一个 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
上时,属性,Name
,Age
,Adress
为空
我错过了什么?如何将查询结果分配给我的属性,以便我可以像那样使用它们:
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
所以我的主要想法是:查询是否输出了您认为的结果?数据是你认为的那样吗?另外:你确定 age
是 string
吗?