C# 数据表的每一行作为一个类?
我有一门“位置”课。此类基本上保存地址,因此称为“位置”。我有一个datatable,它返回多个我想成为“位置”的记录 现在,我在“location”类中有一个“load”方法,该方法通过ID获取单个“location”。但是,当我想要从多个datatable行中收集“location”对象时,我该怎么办?每一行都是一个“位置” 出于明显的原因,我不想为每条记录都去数据库。我是否只是创建一个location类的新实例,将值分配给属性,同时绕过“load”方法在datatable中的行中循环?在我看来,这似乎合乎逻辑,但我不确定这是否是正确的/最有效的方法。这就是(您的描述)一行(或一组行)数据如何映射到C#biz对象。但是为了节省大量的工作,你应该考虑一些现存的ORM(对象关系映射器)框架之一,例如, 大多数ORM实际上会生成所有样板代码,其中行和字段映射到.NET对象属性,反之亦然。(是的,ORMs允许您添加、更新和删除db数据,就像检索和映射数据一样简单。)请查看一下ORMs。少量的学习(每种学习都有一些学习曲线)将很快得到回报。ORMs也正在变得非常标准,并且在任何涉及到RDBMS的应用程序中都是如此 此外,这些链接可能会引起兴趣(与ORM相关):C# 数据表的每一行作为一个类?,c#,.net,class,C#,.net,Class,我有一门“位置”课。此类基本上保存地址,因此称为“位置”。我有一个datatable,它返回多个我想成为“位置”的记录 现在,我在“location”类中有一个“load”方法,该方法通过ID获取单个“location”。但是,当我想要从多个datatable行中收集“location”对象时,我该怎么办?每一行都是一个“位置” 出于明显的原因,我不想为每条记录都去数据库。我是否只是创建一个location类的新实例,将值分配给属性,同时绕过“load”方法在datatable中的行中循环?在我
您走上了正确的道路,一次访问数据库就可以获得所需的所有位置,这在性能方面是最好的 要使代码更清晰/更短,请为
位置
类创建一个构造函数,该构造函数接受数据行
,然后将相应地设置属性。通过这样做,您将把从列到属性的映射集中在代码库中的一个位置,这将很容易维护
然后,完全可以通过数据表中的行循环并调用构造函数
您还可以使用,如进行数据库交互。创建一个返回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。太好了。不知道为什么我没有想到这一点。