我们可以将数据表从业务层传递到表示层吗?

本文关键字:表示层 业务 数据表 我们 | 更新日期: 2023-09-27 18:10:12

我正在做一个3层架构的项目,我需要问我们是否可以将数据表直接传递到表示层,因为它来自数据层,这是一个很好的做法吗?

我们可以将数据表从业务层传递到表示层吗?

是的,你可以,但这根本不是一个好的做法。最好为DB中的每个数据表都有一个Entity类。每个类都有类似于DB列的公共属性。所有这些东西都应该位于业务层之下。在数据访问层中,以数据表的形式从DB中获取数据,传递给业务层,并将此表转换为实体对象的集合,然后传递给表示层。

恕我直言,你的问题很值得商榷

在这种情况下考虑以下几点来做决定:

  1. 如果数据库提供程序是您使用ADO实现的自定义。. NET或实体框架或任何其他ORM,然后更改为POCO类并传递那些POCO实例不使用DataTable。
  2. 使用DataTable,如果你的结果不是固定的,这样你可以创建POCO类。

查看关于在三层架构中使用DataTable的旧文章。

>

In Cs Page .........

public DataTable dtDistinctFRU;
dtDistinctFRU= dsData.Tables[0];

在aspx页面........

 <% foreach (System.Data.DataRow row in dtDistinctFRU.Rows)
     {
 %>
....some html ...
<% Response.Write(rowNum); %>

我从来没有这样做过,因为如果通过它们传递相同的对象,为什么首先需要这些不同的层呢?无论如何,这是一个建筑问题,没有正确的答案,只有意见。

我的观点:我喜欢操作是业务操作,清楚地显示您对它们的期望,而不是CRUD操作。您只传递完成业务操作所需的内容,而在查询的情况下,您只返回UI真正需要的内容。这意味着您需要设计特定的数据契约,而不是通用的数据表。这意味着数据层与数据实体一起工作,并将它们映射到您的域实体(例如,首先使用EF代码)。然后将这些域实体映射到您的服务的数据传输对象;在你的UI中使用。

您可以在http://tinyurl.com/d99w8rl上阅读该系列以获得一些灵感(特别是第2部分)。