C# 数据表的每一行作为一个类?

C# 数据表的每一行作为一个类?,c#,.net,class,C#,.net,Class,我有一门“位置”课。此类基本上保存地址,因此称为“位置”。我有一个datatable,它返回多个我想成为“位置”的记录 现在,我在“location”类中有一个“load”方法,该方法通过ID获取单个“location”。但是,当我想要从多个datatable行中收集“location”对象时,我该怎么办?每一行都是一个“位置” 出于明显的原因,我不想为每条记录都去数据库。我是否只是创建一个location类的新实例,将值分配给属性,同时绕过“load”方法在datatable中的行中循环?在我

我有一门“位置”课。此类基本上保存地址,因此称为“位置”。我有一个datatable,它返回多个我想成为“位置”的记录

现在,我在“location”类中有一个“load”方法,该方法通过ID获取单个“location”。但是,当我想要从多个datatable行中收集“location”对象时,我该怎么办?每一行都是一个“位置”

出于明显的原因,我不想为每条记录都去数据库。我是否只是创建一个location类的新实例,将值分配给属性,同时绕过“load”方法在datatable中的行中循环?在我看来,这似乎合乎逻辑,但我不确定这是否是正确的/最有效的方法。

这就是(您的描述)一行(或一组行)数据如何映射到C#biz对象。但是为了节省大量的工作,你应该考虑一些现存的ORM(对象关系映射器)框架之一,例如,

大多数ORM实际上会生成所有样板代码,其中行和字段映射到.NET对象属性,反之亦然。(是的,ORMs允许您添加、更新和删除db数据,就像检索和映射数据一样简单。)请查看一下ORMs。少量的学习(每种学习都有一些学习曲线)将很快得到回报。ORMs也正在变得非常标准,并且在任何涉及到RDBMS的应用程序中都是如此

此外,这些链接可能会引起兴趣(与ORM相关):


您走上了正确的道路,一次访问数据库就可以获得所需的所有位置,这在性能方面是最好的

要使代码更清晰/更短,请为
位置
类创建一个构造函数,该构造函数接受
数据行
,然后将相应地设置属性。通过这样做,您将把从列到属性的映射集中在代码库中的一个位置,这将很容易维护

然后,完全可以通过数据表中的行循环并调用构造函数


您还可以使用,如进行数据库交互。

创建一个返回IEnumerable的方法。在这个方法中,我经常将sqldatareader传递到位置构造函数中。所以我想要这样的东西

public static IEnumerable<location> GetLocations()
{
   List<location> retval = new List<location>();
   using(sqlconnection conn = new sqlconn(connection string here);
   {
      sqlcommand command = new sqlcommand(conn, "spLoadData");
      command.commandtype=stored proc
      SqlDataReader reader = command.executereader();
      while(reader.read())
      {
          retval.add(new location(reader));
      }
   }
   return retval;
}
公共静态IEnumerable GetLocations()
{
List retval=新列表();
使用(sqlconnection-conn=newsqlconn(此处为连接字符串);
{
sqlcommand=newsqlcommand(conn,“spLoadData”);
command.commandtype=存储过程
SqlDataReader=command.executereader();
while(reader.read())
{
添加(新位置(读卡器));
}
}
返回返回;
}
显然,这段代码不起作用,但它只是给你一个想法


如果你有很多事情要做的话,一个ORM映射器可以为你节省大量的时间!

Sweet。太好了。不知道为什么我没有想到这一点。