返回实体类的列表
本文关键字:列表 实体 返回 | 更新日期: 2023-09-27 18:17:48
这是我的class:
public class Customer
{
public int ID { get; set; }
public string Card_ID { get; set; }
public double Cash { get; set; }
public string Name { get; set; }
public Image Photo { get; set; }
}
我需要在我的数据库上做一个SELECT
来获得customer
的一些信息,我曾经使用DataSet
,但我看到它不是最好的选择,当它涉及到性能。此外,我只需要读取2或3个字段,我开始了这个方法:
public List<Customer> ConsultCustomerData(string cardID)
{
list<Customer> customer = null;
string sql = "SELECT name, cash FROM customers WHERE card_id = @cardID";
try
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new MySqlParameter("@cardID", MySqlDbType.VarChar)).Value = cardID;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
现在我不知道如何继续…
如何使用List
或IList
返回这些信息?
可以使用command。方法,并使用reader填充实体数据。
public List<Customer> ConsultCustomerData(string cardID)
{
List<Customer> list = new List<Customer>();
string sql = "SELECT name, cash FROM customers WHERE card_id = @cardID";
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new MySqlParameter("@cardID", MySqlDbType.VarChar)).Value = cardID;
using (IDbDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
list.Add(new Customer {
Name = reader.GetString(0),
Cash = reader.GetDouble(1)
});
}
}
return list;
}
检查:
- ADO。. NET IDbCommand接口及其MySql实现
- ADO。. NET IDataReader接口及其MySql实现
你可以用你的查询创建一个阅读器。初始化列表后。的做while(datareader.read())
,并在循环中创建一个Customer对象,给出reader的值,最后将其添加到列表中。
您可以使用传统的cmd.ExecuteReader()
方式或使用像Dapper这样的ORM。
public List<Customer> ConsultCustomerData(string cardID)
{
const string query = "SELECT name, cash FROM customers WHERE card_id = @cardID";
try
{
using(var connection = new MySqlConnection(connectionString))
{
connection.Open();
return connection.Query<Customer>(query, new { cardID }).ToList();
}
}
catch(Exception ex)
{
// Logging, etc..
Console.Write(ex.ToString());
throw; //Rethrow exception
}
}
我肯定会推动切换到使用ORM像实体框架,甚至Linq到SQL -然而,要回答你的问题,你需要读取从查询的信息,即
using (var reader = cmd.ExecuteReader())
{
List<Customer> customers = new List<Customer>();
while(reader.Read())
{
customers.Add(new Customer
{
Name = reader.GetString(0),
Cash = reader.GetDouble(1)
});
}
return customers;
}
使用SQL Data Reader读取数据,并将相关数据设置为您的实体,并构建如下所示的列表。
list <Customer> lstCustomer =new list <Customer>();
while (reader.Read())
{
Customer cus=new Customer();
cus.Card_ID =......
.............
................
lstCustomer.Add(cus);
}
添加模型。Edmx到您的项目。然后你就可以很容易地理解剩下的内容了。它为你创建了模型。您不需要担心创建类。如果你有表关系也很有用。您不必编写SQL代码来写入或读取数据库。
这是如何使用EF的链接