首页 新闻 搜索 专区 学院

4个问题,设计ORM,3层……(我只剩10分了,抱歉)

0
悬赏园豆:10 [已解决问题] 解决于 2009-12-13 15:00

这几天看了看ORM(我看的Castle ActiveRecord),看完以后我又迷茫了。

以前做东西的层次如下:

 

 问题1:

原来我是在DAL层写具体的CRUD,现在有了ORM生成的Model(Model里都带了CRUD)后就不要DAL了吗?

 

问题2:

如果加入了ORM,那上面的层次要如何搭配了呢?难道Model里自带的CRUD要贯穿全部层了吗?

 

问题3:

如果一个功能需要有2步:

1)  插入数据库一条数据后获得返回的Id(Id为数据库自增长)。

2)  根据这个Id再向关系表里插入一条数据。

 

如果这两部在数据库里我会写存储过程直接用事务来实现。

我的问题是如果用ORM,我可以在BLL层(是在BLL好还是在IDAL好?)把这两部组装成一个事务吗?

 

问题4:

关于每层的项目数。

       如果说现在一个程序里有两个功能模块(A,B)我一般会建下列项目:

       Sample.Web

      

Sample.BLL.A

       Sample.IDAL.A

       Sample.DAL.ASQLServer

       Sample.DAL.AAccess

 

Sample.BLL.B

       Sample.IDAL.B

       Sample.DAL.BSQLServer

       Sample.DAL.BAccess

 

       我这样做一开的原因是有可能程序到最后分几个版本,每个版本的功能模块不一样,到时候给不同的dll就好了。但是如果一个程序里只有2个功能模块,那这项目个数我还能接受,如果是10个8个的话照我这样建立项目,那一个解决方案里就得有几十个项目,到时候我得晕死,请问您是怎么建项目的?

 

 

 

 

 

JieNet的主页 JieNet | 初学一级 | 园豆:0
提问于:2009-12-05 22:15
< >
分享
最佳答案
0

1:你使用的方案其实是另一种模式,和ActiveRecord不同,应该是属于Mapper模式,所以没有什么可比性。ActiveRecord更简单。具体参见《Patterns of Enterprise Application Architecture》。

2:同上。

3:这是业务逻辑,当然入在BLL了。具体的,你可以使用分布式事务。如使用类TransactionScope。

4:推荐分开为多个工程。(http://www.cnblogs.com/zgynhqf/archive/2009/11/21/1607743.html)如果嫌这个单向依赖的工作太多,可以使用虚拟的目录进行管理。

收获园豆:10
BloodyAngel | 菜鸟二级 |园豆:230 | 2009-12-06 10:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册