Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么要创建类来表示web应用程序中的数据?_Asp.net_Oop_Poco - Fatal编程技术网

Asp.net 为什么要创建类来表示web应用程序中的数据?

Asp.net 为什么要创建类来表示web应用程序中的数据?,asp.net,oop,poco,Asp.net,Oop,Poco,过去,在我设计和构建的应用程序中,我通常使用类来表示我的数据。但在web应用程序中,这似乎不需要/不适用,因为数据存储在数据库中,DataSet之类的东西对于检索和保存数据非常有用 我目前使用ASP.NET,数据绑定控件(如GridView)似乎喜欢绑定到SqlDataSource,ObjectDataSource,DataView,等等。因此,给定一个从数据库中提取数据集的静态MyDB类,我的面向数据的页面代码通常基本上如下所示: DataSet employeeData = MyDB.Get

过去,在我设计和构建的应用程序中,我通常使用类来表示我的数据。但在web应用程序中,这似乎不需要/不适用,因为数据存储在数据库中,
DataSet
之类的东西对于检索和保存数据非常有用

我目前使用ASP.NET,数据绑定控件(如
GridView
)似乎喜欢绑定到
SqlDataSource
ObjectDataSource
DataView
,等等。因此,给定一个从数据库中提取
数据集的静态
MyDB
类,我的面向数据的页面代码通常基本上如下所示:

DataSet employeeData = MyDB.GetData();
DataView dvEmpData = new DataView(employeeData);
grdData.DataSource = dvEmpData;
grdData.DataBind();
因此,我通常没有与数据库模式对应的数据类。但是像和EF框架这样的新开发支持创建和使用这些类。这有什么好处?我的想法是:

  • 编译时错误,否则直到运行时才会注意到拼写错误<代码>员工数据[0]。行[i][“名称”]
不如
员工[i]好。名称
其中
员工
是一个
IEnumerable
  • 在C#3及更高版本中,能够在
    IEnumerable
    上使用LINQ和cool扩展方法灵活地筛选数据集合,而不必为我需要执行的每个聚合/选择在数据库中创建/更改存储过程或查询
  • 源代码比数据库更容易保存在SCM中,这意味着在源代码中保留更多的逻辑更好
  • 像我这样一个学习CS做本地应用程序的人更舒服:-)
  • 另一方面,在将数据放在屏幕上之前将其转换为.NET类是一个需要计算时间的步骤,并且不是严格必要的。我感觉,
    GridView
    和它的同胞会更喜欢绑定到
    DataView
    ,而不是
    IEnumerable
    。此外,数据库在查询和聚合数据方面将比LINQ更快


    POCO认可的方法背后的原因是什么?我在这里讲过了吗,还是遗漏了什么?

    简明扼要地回答您的具体问题:

    利用业务对象,您可以比SQL更高效地对内存中的数据执行逻辑,或者以特殊方式在多个位置执行逻辑

    • 示例:需要在页面名称更改时设置URL重写吗?一个中心位置显然是理想的
    但是…

    您可以通过使用LINQtoSQL或在更复杂的情况下使用其他ORM(如or)来排除大多数负面影响

    阅读Scott Gu关于LINQ to SQL的博客,并从中获得一些关于该主题的灵感

    • 使用LINQtoSQL,您可以在没有缺点的情况下获得好处(如您所提到的),再加上一些额外的好处
    但是…


    在您不需要这种非平凡逻辑的情况下,您还可以使用并直接绑定到Gridview;然而,LINQtoSQL非常简单,许多人甚至在最简单的情况下也喜欢它

    看起来很棒!它如何处理数据库的更新?如果我更改更新/选择/删除存储过程以获取更多参数,或者在开发过程中更改表的架构,会发生什么情况?我在ASP.NET 2中使用了TableAdapters,但在这方面有问题。要更新数据:Dim DB as new AppDataContext::MyProduct.Price=NewPrice::DB.SubmitChanges()默认情况下,LINQ To SQL自动生成SQL以执行选择/更新等。但是,您可以指定覆盖(例如存储过程)。我建议花上几个小时来阅读这些。。。你会很高兴你做到了!从第1部分开始!