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

时间:2013-04-22 06:58:43

标签: c# asp.net

我正在开发一个三层架构的项目,我需要问一下,如果我们可以将数据表直接传递给表示层,因为它来自数据层,这是一个好习惯吗?

4 个答案:

答案 0 :(得分:4)

是的,你可以,但这根本不是一个好习惯。最好为DB中的每个数据表创建一个Entity类。每个类都有与您的数据库列类似的公共属性。所有这些都应该存在于您的业务层之下。在数据访问层中,以数据表的格式从DB获取数据,传递到业务层并将此表转换为实体对象集合并传递到表示层。

答案 1 :(得分:1)

  

恕我直言,你的问题很有争议

在这种情况下,请考虑以下几点作出决定:

  1. 如果使用ADO.NET或Entity Framework或任何其他ORM自定义数据库提供程序,则更改为POCO类并传递这些POCO实例,不要使用DataTable。
  2. 如果结果未修复,请使用DataTable,以便您可以创建POCO类。
  3. 检查here有关在三层架构中使用DataTable的旧文章。

    阅读使用POCO和DataTable的在线优势。

答案 2 :(得分:0)

在Cs页面.........

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

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

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

<% Response.Write(rowNum); %>

答案 3 :(得分:0)

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

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

你可以在http://tinyurl.com/d99w8rl阅读系列文章以获得灵感(尤其是第2部分)。