如何从数据表自动创建一个类

use*_*060 3 c# sql datatable serialization class

我知道有一种比我现在的方式更清洁的方法。基本上,我从我的 sql 数据库中检索数据表。我现在想将这些信息放在一个全局可访问的类中。我不想像这样遍历每一列:txtFirstName.Text = dt[0].ToString()。我想创建一个“用户”类,并分配 txtFirstName.Text = User.FirstName。但是,我不想手动将 dt[0] 映射到 FirstName,将 dt[1] 映射到 LastName...我希望自动创建对象!或者,至少一旦创建了类,并且元素与 dt 列的名称匹配,映射就会自动发生。

谢谢!

Tod*_*her 5

为什么不使用 Linq to SQL?我很喜欢。

绘制表格后,您可以在这种情况下为单个表格创建单独的部分 .cs 类文件。不要编辑生成的代码 :) 如果您将 dbml 文件保存在“App_Code/Linq_customer/”文件夹中并映射了一个名为“Customer”的表,则您的类可能如下所示(未经测试的代码):

using System.Linq;

namespace Linq_customer
{
    public partial class Customer
    {
        public static Customer GetCustomerByID(int customerID, CustomerDataContext dc)
        {

            return (from s0 in dc.Customers
                   where s0.customerID== customerID
                   select s0).firstOrDefault();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的页面或其他课程中执行以下操作:

using Linq_customer;
...
CustomerDataContext dc = new CustomerDataContext() //(Generated data context)
Customer myCustomerDude = Customer.GetCustomerByID(5, dc);
if(myCustomerDude == null) return error..
txtFirstName.Text = myCustomerDude.firstName;
Run Code Online (Sandbox Code Playgroud)

(可选)如果您想创建一个新用户:

myCustomerDude = new Customer();
Run Code Online (Sandbox Code Playgroud)

保存任何新信息也很容易:

...

myCustomerDude.City = txtCity.Text;
myCustomerDude.favoriteSlogan = "I believe in Science";
dc.Customers.insertOnSubmit(myCustomerDude); //If not already existing, if is already in table then omit this line.
dc.submitChanges();
Run Code Online (Sandbox Code Playgroud)