三层的困惑

简介:

这个问题困惑我已经很久了,从开始学习。NET到现在……

写三层的时候,遇到这样的情况怎么办?
User{
    int UserId,
    String UserName
}
Article{
    int Id,
    int UserId,//作者ID
    String Title,
}

现在有个表格要显示如下两列:ArticleTitle,UserName
其中每一行对应每一篇文章。
在三层架构中,应该这样做吧:

//用于存储最后显示于表示层的数据,相当于Fascade。这是页面上用于绑定在Repeater等控件上的最终数据
DataTable dt = new DataTable();dt.addColumn("ArticleTitle");
dt.addColumn("UserName");
//通过BLL对象获取全部文章对象
List articles = SomeClass.GetAllArticles();
//每个文章对象,
foreach(Article a in articles){
    //查出其作者对象(*)
    User user = SomeClass.FindUser(a.UserId);
    //存储数据到dt;
    DataRow dr = dt.newRow();
    dr["ArticleTitle"] = a.Title;
    dr["UserName"] = user.UserName;
    dt.rows.add(dr);
}
//显示在页面上
Repeater1.DataSource = dt;
Repeater1.DataBind();


在这里,打星的地方查了N多次数据库,这当然不行,性能很差。
方案一:直接用sql语句构造一个链接的字符串,如:select articles.title,user.Username from articles inner join user on ....
    然后再查询。
    问题:这样的话,怎么样做到“三层”呢?在BLL,又应该返回哪个对象的集合呢?
方案二:在数据库里使用视图,对应视图在model中构造对应的model.
    问题:这样的话,如果表示层改变一个要显示的字段,不就要新建立一个视图,并建立相应的model?
方案三:有人说使用类型化的DATASET,不过这个方案一听就不太喜欢。毕竟想用对象的方式访问数据嘛。


本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/archive/2008/06/02/1212044.html,如需转载请自行联系原作者

相关文章
|
3月前
|
域名解析 存储 网络协议
一次读懂网络分层:应用层到物理层全解析
**网络五层模型简介:** 探索网络服务的分层结构,从应用层开始,包括HTTP(网页传输)、SMTP(邮件)、DNS(域名解析)和FTP(文件传输)协议。传输层涉及TCP(可靠数据传输)和UDP(高效但不可靠)。网络层由IP(路由数据包)、ICMP(错误报告)和路由器构成。数据链路层处理MAC地址和帧传输,物理层规定了电缆、连接器和信号标准。了解这些基础,有助于深入理解网络运作机制。
239 5
|
4月前
|
架构师 持续交付 微服务
探索软件架构设计的深层逻辑
【6月更文挑战第5天】在数字化浪潮中,软件架构设计如同搭建一座虚拟的巴别塔,它不仅需要承载技术的重量,还要预见未来的需求。本文将通过我的个人经验,探讨如何在变化莫测的技术海洋中,寻找到稳固的架构基石,以及如何让这座塔楼灵活地适应不断变化的环境。
37 1
|
5月前
|
网络协议 网络架构
计算机网络的体系结构的各层在整个过程中起到什么作用?
计算机网络的体系结构的各层在整个过程中起到什么作用?
|
12月前
|
设计模式 网络协议 Java
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
102 0
|
数据采集 数据库
学习计算机三层结构
学习计算机三层结构
学习计算机三层结构
|
存储 数据采集 数据库
【机房重构】三层
【机房重构】三层
|
SQL 存储 数据采集
三层结构基础知识
有DAL(数据访问)和BLL(业务逻辑)
|
消息中间件 JavaScript 小程序
架构设计:为什么说复用是邪恶的?
架构设计:为什么说复用是邪恶的?
|
BI 程序员
透过文学经典理解软件设计的抽象思想
透过文学经典理解软件设计的抽象思想
|
数据库连接 数据库
经典三层架构以及分层的原则
经典三层架构以及分层的原则
266 0