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

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

I have been told that I should not use DataTable in UI level.

请帮助我理解这个概念.

解:

MyApp.Data
MyApp.Logic
MyApp.Web

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

在我的应用程序上,我想做的就是简单地通过从下拉列表中选择的表名绑定一个Gridview.但是,有数百个表.此处的目的仅仅是向用户显示数据(带有分页).

因此,项目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来说,创建/加载/使用数据表是一种不好的做法,这种想法来自这样的想法,即最好将应用程序拆分为专门的层,最常见的拆分为三层:

第1层是一个数据层,负责与数据库进行通信并填充域对象,这些域对象通常在第2层中定义,第2层还包含应用程序的业务逻辑.

按领域对象,我指的是代表真实事物的类,例如客户,银行帐户,酒店房间等.
通过业务逻辑,我指的是在事件期间(即预订酒店房间时)向客户发送确认的适用于领域对象的规则.

第三层是UI层,为了简单地编码,它仅应处理第2层中的内容,这是不使用UI中数据表的建议.

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

希望这可以帮助

上一篇:CodeGo.net>如何处理DataTable.Select(“”)中的特殊字符?


下一篇:msql,触发器无事物回滚,插入之前满足条件再插入