哲学驱动设计

简介:

三层的困惑

这个问题困惑我已经很久了,从开始学习。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,不过这个方案一听就不太喜欢。毕竟想用对象的方式访问数据嘛。

暂时把问题记在这里,何时能解决了,再说吧~

目录
相关文章
|
8月前
|
设计模式 Linux 程序员
Linux驱动的软件架构(一):驱动的软件设计模式理念
Linux驱动的软件架构(一):驱动的软件设计模式理念
150 0
|
6月前
|
测试技术 数据处理
领域驱动使用问题之通过领域模型来驱动软件开发,如何解决
领域驱动使用问题之通过领域模型来驱动软件开发,如何解决
|
8月前
|
Linux 芯片
Linux 驱动开发基础知识—— 驱动设计的思想(六)
Linux 驱动开发基础知识—— 驱动设计的思想(六)
107 0
Linux 驱动开发基础知识—— 驱动设计的思想(六)
|
8月前
|
Unix Linux 编译器
Linux驱动设计(一):驱动是什么?
Linux驱动设计(一):驱动是什么?
66 0
|
存储 XML 缓存
「领域驱动设计」领域驱动的设计和开发最佳实践(下)
「领域驱动设计」领域驱动的设计和开发最佳实践
|
存储 设计模式 缓存
「领域驱动设计」领域驱动的设计和开发最佳实践(上)
「领域驱动设计」领域驱动的设计和开发最佳实践
|
存储 XML 缓存
「领域驱动设计」领域驱动的设计和开发最佳实践
「领域驱动设计」领域驱动的设计和开发最佳实践
|
NoSQL 算法 MongoDB
使用项目驱动学习编程的诀窍
使用项目驱动学习编程的诀窍
189 0
|
Linux 开发工具 芯片
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十八)驱动设计的思想:面向对象/分层/分离
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十八)驱动设计的思想:面向对象/分层/分离
172 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十八)驱动设计的思想:面向对象/分层/分离
|
测试技术 微服务
架构视角 - DDD、TDD、MDD领域驱动、测试驱动还是模型驱动?
「领域驱动设计」之于微服务,好比麦当劳之于汉堡(个人更喜欢肯德基,汉堡要大些,麦当劳的汉堡,想吃顿饱饭,请先给我上6个😂)。但是TDD测试驱动、MDD模型驱动好像也很火啊,到底什么在驱动?
架构视角 - DDD、TDD、MDD领域驱动、测试驱动还是模型驱动?

热门文章

最新文章