如何在Asp.Net MVC中将数据表转换为POCO对象?

Jos*_*osh 6 asp.net-mvc datatable poco

如何在Asp.Net MVC中将数据表转换为POCO对象?

tva*_*son 10

将每个DataRow传递给类构造函数(或使用getter/setter)并将每个列转换为相应的属性.小心可空列可以正确提取它们.

  public class POCO
  {
       public int ID { get; set; }
       public string Name { get; set; }
       public DateTime? Modified { get; set; }
       ...

       public POCO() { }

       public POCO( DataRow row )
       {
            this.ID = (int)row["id"];
            this.Name = (string)row["name"];
            if (!(row["modified"] is DBNull))
            {
                 this.Modified = (DateTime)row["modified"];
            }
            ...
       }
  }
Run Code Online (Sandbox Code Playgroud)


mar*_*c_s 5

数据表通常包含许多行 - 您是否要将每一行转换为对象实例?

在这种情况下,您可以例如向POCO对象添加一个构造函数,该构造函数将接受DataRowas参数,然后从中提取以下部分DataRow:

public YourPOCO(DataRow row)
{
   this.Field1 = row["Field1"].ToString();
   ...
   this.FieldN = Convert.ToInt32(row["FieldN"]);
}
Run Code Online (Sandbox Code Playgroud)

依此类推,然后在DataTable.Rows集合中的每一行上调用该构造函数:

List<YourPOCO> list = new List<YourPOCO>();

foreach(DataRow row in YourDataTable.Rows)
{
   list.Add(new YourPOCO(row));
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以基于此"YourPOCO"类型创建ASP.NET MVC视图或部分视图,并使用"List"模板在类似列表的显示中创建"YourPOCO"实例列表.