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

标签 c# asp.net gridview user-interface 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。

在我的应用程序中,我想做的只是通过从下拉列表中选择的表名绑定(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/

相关文章:

wpf - 从 gridview 对象获取父 ListView

c# - 更优雅的更新空对象属性的方法

c# - 如何从 C# 中的应用程序获取在后台运行的应用程序的菜单项的句柄

c# - 如何在操作中绑定(bind) View 模型子类值?

c# - Gridview在 View 状态中使用自定义对象插入删除

c# - 如何填充 GridView 异步

c# - 如何从保存文件对话框中仅检索文件名

c# - 如何在 Windows 10 应用程序中动态更改 Split View背景颜色

asp.net - ASP MVC href 到 Controller / View

c# - .NET 迁移 : Setup and migrate multiple databases at runtime