3

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

有人告诉我,我不应该在 UI 级别使用 DataTable。

请帮助我理解这个概念。

解决方案:

MyApp.Data
MyApp.Logic
MyApp.Web

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

在我的应用程序中,我要做的只是通过从下拉列表中选择的表名绑定一个网格视图。但是,有数百张桌子。这里的目的只是向用户显示数据(通过分页)。

所以项目 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 级别拥有数据表真的很糟糕吗?为什么它是一个糟糕的设计?

4

1 回答 1

4

用户界面创建/加载/使用数据表是不好的做法的想法来自这样一种想法,即最好将应用程序拆分为专门的层,最常见的拆分是 3 层:

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

域对象是指代表真实事物的类,如客户、银行帐户、酒店房间等。业务逻辑是指在事件期间适用于域对象的规则,即当酒店房间被预订时,会向客户发送确认信息。

第三层是 UI 层,为了简化编码,这应该只处理第 2 层中的内容,这就是在 UI 中不使用数据表的建议的来源。

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

希望这可以帮助

于 2013-09-03T14:05:49.520 回答