我正在开发一个三层架构的项目,我需要问一下,如果我们可以将数据表直接传递给表示层,因为它来自数据层,这是一个好习惯吗?
答案 0 :(得分:4)
是的,你可以,但这根本不是一个好习惯。最好为DB中的每个数据表创建一个Entity类。每个类都有与您的数据库列类似的公共属性。所有这些都应该存在于您的业务层之下。在数据访问层中,以数据表的格式从DB获取数据,传递到业务层并将此表转换为实体对象集合并传递到表示层。
答案 1 :(得分:1)
恕我直言,你的问题很有争议
在这种情况下,请考虑以下几点作出决定:
检查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部分)。