分层开发 多表问题 不知道我这样做好不好 请高手评论!

netsyt 2008-07-07 04:18:27
用多层方式写程序一直对多表查询很郁闷~
我现在的做法是
比如说两个表
A(ID,B_ID,Value)
B(ID,Value)
这样两个表

数据实体我写一个A类一个B类,
A类包含B类的引用

在数据访问层填充数据实体的时候
获取A实体 我会得到A数据后 先用B_ID通过数据访问B类
获得B类的实体 然后在 创建A类实体

我这到这样会降低效率 但是我觉得这样清晰地多
我想知道这样带来的效率问题会不会是灾难性的!

还多一个问题 多表case问题
比如
A(ID,B_Value,IsHasB,Value)
B(ID,Value)
SQL中出现
case IsHasB when 1 then B_Value else '' end
这样的语句 怎么处理
请高手指点
...全文
124 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsyt 2008-07-09
  • 打赏
  • 举报
回复
恩 谢谢泡菜猪!
这两天忙 没过来看
结贴了!
hubblebubblepig 2008-07-07
  • 打赏
  • 举报
回复
你写的查询可以获得一个具有id value b_value的数据集
如果你要根据IsHasB的不同来分别处理的话
最好提供两个查询
一个提供id value b_value
一个提供id value(因为这里的b_value都是'')
netsyt 2008-07-07
  • 打赏
  • 举报
回复
呵呵 怪我~~
SQL 全部是 Select A.ID,A.Value,(case IsHasB when 1 then B.Value else '' end) as B_Value from A,B Where A.B_ID=B.ID
都是获得一个对象 只是内部根据ishasb的值来确实B_Value 是否为空

hubblebubblepig 2008-07-07
  • 打赏
  • 举报
回复
case IsHasB when 1 then B_Value else '' end
这也只是取出来的一个字段(与之相对应的也只是一种属性)的值啊
重载的不同只是通过赋值给不同的属性而获得不同的对象

我没太明白你的意思....
netsyt 2008-07-07
  • 打赏
  • 举报
回复
我说的是case IsHasB when 1 then B_Value else '' end
这种情况 在调用函数前我是不知道 ishasb是1还是0
无法调用不同的函数
hubblebubblepig 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 netsyt 的回复:]
谢谢
你的意思是 查询后做IF判断 来调用不同的构造函数来创建需要的对象?
[/Quote]
不见得一定要判断 你可以写成不同的方法 来返回带有不同属性值(以需要为准)的对象 不同的页面使用不同的方法来调用数据 而一切所谓"多表操作" 都是对应着数据库中不同存储过程里的"联合查询"...
netsyt 2008-07-07
  • 打赏
  • 举报
回复
谢谢
你的意思是 查询后做IF判断 来调用不同的构造函数来创建需要的对象
hubblebubblepig 2008-07-07
  • 打赏
  • 举报
回复
一个实体类里面也可以包含一些额外的属性 来表示那些数据库结构中原本没有的字段 并对构造函数进行重载 在不同的情况下构建不同的对象

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧