我是初学者。我发现很难理解这里的一个概念。
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。
在我的应用程序中,我想做的只是通过从下拉列表中选择的表名绑定(bind)一个 gridview。然而,有成百上千张 table 。这里的目的只是为了向用户显示数据(带分页)。
所以项目 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。然后绑定(bind) gridview,一切正常。
那么我这里做错了什么?在 UI 级别拥有数据表真的很糟糕吗?为什么它是糟糕的设计?
最佳答案
您的 UI 创建/加载/使用数据表是不好的做法的想法来自这样一种想法,即最好将您的应用程序拆分为专门的层,最常见的拆分是有 3 层:
第 1 层是负责与数据库通信和填充域对象的数据层,域对象通常在第 2 层中定义,该层还包含应用程序的业务逻辑。
我所说的领域对象是指代表真实事物的类,如客户、银行账户、酒店房间等。 我所说的业务逻辑是指在事件期间适用于域对象的规则,即当预订酒店房间时,会向客户发送确认信息。
第三层是 UI 层,为了简化编码,这应该只处理第 2 层中的内容,这是建议不要在 UI 中使用数据表的地方。
当您的应用程序很大,或者您有多个开发人员在处理它,或者您使用单元测试时,拆分您的应用程序的动机才真正开始有意义。如果你处于那种情况,那么我会尝试找一个友好的团队成员来更好地解释这一点,但如果这只是你自己编写一个应用程序,那么我不会太担心,写很多代码,阅读大量书籍,这些东西会更有意义,我会推荐 craig larman 关于 uml 和模式的书。
希望对你有帮助
关于c# - 为什么在 UI 中使用 DataTable 是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562928/