为什么在UI中使用DataTable是错误的?

我是初学者。 我发现这里很难理解一个概念。

我被告知我不应该在UI级别使用DataTable。

请帮我理解这个概念。

解:

MyApp.Data MyApp.Logic MyApp.Web 

MyApp.Web引用MyApp.Logic,MyApp.Logic引用MyApp.Data。

在我的应用程序中,我想要做的只是通过tablename绑定gridview,tablename是从下拉列表中选择的。 但是,有数百个表。 这里的目的只是向用户显示数据(带分页)。

所以项目MyApp.Data上的类“Get_Data”有一个函数:

 public static DataTable Get_DataTable_By_Name(string Table_Name) { //Check and santize the table name for possible SQL injection attack. //SELECT FROM DATABASE TABLE. return DataTable; } 

从MyApp.Logic,我只是将数据表从MyApp.Data层传递给MyApp.Web。 然后gridview被绑定,一切都在这里工作。

那我在这里做错了什么? 在UI级别拥有数据表真的很糟糕吗? 为什么这是一个糟糕的设计?

您的UI创建/加载/使用数据表的不良做法的概念来自于将应用程序拆分为专门的层,最常见的拆分是3层的想法:

第1层是负责与数据库通信和填充域对象的数据层,域对象通常在第2层中定义,第2层也包含应用程序的业务逻辑。

通过域对象,我指的是代表客户,银行账户,酒店房间等真实事物的类,并且通过业务逻辑,我指的是在事件期间适用于域对象的规则,即当预订酒店房间时,向客户发送确认。

第三层是UI层,为了简单地编码,这应该只处理第2层中的什么,这是在UI中不使用数据表的建议来自的地方。

当您的应用程序很大,或者您有多个开发人员在使用它或使用unit testing时,分离应用程序的动机真正开始有意义。 如果您处于这种情况,那么我会尝试找到一个友好的团队成员来更好地解释这个,但如果这只是你自己编写一个应用程序,那么我不会太担心它,写很多代码,阅读大量的书籍和这些东西会更有意义,我会推荐关于uml和模式的克雷格拉曼书。

希望这可以帮助