C# 返回实体类的列表

C# 返回实体类的列表,c#,list,ilist,C#,List,Ilist,这是我的班级: 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; } } 我需要在我的数据库上

这是我的班级:

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; }
   }  
我需要在我的数据库上进行选择,以获取客户的一些信息,我以前使用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返回这些信息?

您可以使用查询创建一个detraeder。在初始化您的列表之后。该做什么
whiledatareader.read并在循环中创建一个客户对象,给出读者的值,最后将其添加到列表中

您可以使用查询创建detraeder。在初始化您的列表之后。该做什么
whiledatareader.read并在循环中创建一个客户对象,给出读者的值,最后将其添加到列表中

您可以使用command.ExecuteReader方法并使用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接口及其应用 ADO.NET接口及其应用
您可以使用command.ExecuteReader方法并使用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接口及其应用 ADO.NET接口及其应用
您可以使用cmd.ExecuteReader或使用类似ORM的好方法来完成


您可以使用cmd.ExecuteReader或使用类似ORM的好方法来完成


我肯定会推动转换到使用类似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;
}

我肯定会推动转换到使用类似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);

     }

使用SQL Data Reader读取数据,并将关联数据设置为实体,然后构建如下所示的列表

    list <Customer> lstCustomer =new list <Customer>();
    while (reader.Read())
    {
         Customer cus=new Customer();
         cus.Card_ID =......
            .............
            ................
            lstCustomer.Add(cus);

     }

将Model.edmx添加到项目中。然后你就可以很容易地理解剩下的。它为您创建模型。您不必担心创建类。如果您有表关系,也很有帮助。您不必编写SQL代码来写入或读取数据库


以下是如何使用EF。

将Model.edmx添加到项目中。然后你就可以很容易地理解剩下的。它为您创建模型。您不必担心创建类。如果您有表关系,也很有帮助。您不必编写SQL代码来写入或读取数据库



以下是如何使用EF。

您可以使用实体框架或任何类型的ORM。我想可能会使用DataReader,然后在其中循环,然后将其值分配到customer.Field中。但是我不能让它=\对于cmd的每个结果,您必须将数据解析回Customer对象。或者使用一个类似于ORM的实体框架,它可以为您实现这一点。您可以使用实体框架或任何类型的ORM。我认为可以使用一个DataReader,然后在其中循环,然后将其值分配到customer.Field。但是我不能让它=\对于cmd的每个结果,您必须将数据解析回Customer对象。或者使用一个类似于ORM的实体框架,这就为你做了。有人说我可以很容易地得到SQL注入,你能帮我吗?你已经通过使用参数从SQL注入中拯救了自己。这就是我所认为的。。。谢谢,如果我不使用类似于=list.Name=reader[Name].ToString的东西。读卡器现在如何将值传递到list.Name?从select语句中给列序号。这是基于零的有人说我可以很容易地得到一个SQL注入,你能救我吗?你已经通过使用参数从SQL注入中拯救了自己。这就是我所认为的。。。谢谢,如果我不使用类似于=list.Name=reader[Name].ToString的东西。读卡器现在如何将值传递到list.Name?从select语句中给列序号。它是零基数的我从来没有使用过实体框架有这么难吗?我现在就来读。@Ghaleon不是真的,这些年来它被简化了——你可能应该看看这个方法。我从来没有用过实体框架。它有这么难吗?我现在就来读。@Ghaleon其实不是,这些年来它被简化了——你应该看看这个方法。我从来没有使用过ORM。你能写一篇关于它的好文章吗?我会读一些关于它的文章Google和StackOverflow有一些关于ORM的很好的文章,我从来没有用过ORM。你能写一篇关于它的好文章吗?我会读关于它的谷歌和StackOverflow有一些关于ORM的不错的文章。我正在看你链接的视频。这个实体框架和类型化数据集有什么区别?@Ghaleon你可以从这里找到答案:我正在看你链接的视频。这个实体框架和类型化数据集有什么区别?@Ghaleon您可以从这里找到答案: