LINQ to sQL:业务层多个Class Library,or 只用一个?

黄汉 2009-10-15 10:28:51
在公司内部某系统的开发过程中,为了让公司里另外一个业余编程人员参与开发,在设计的时候特意考虑降低代码结构的复杂度。在实现业务层的时候,我告诉他对每一个单独的业务单元创建一个新的Class Library,在每个Class Library中建立自己的LINQ to SQL class(DBML)。

现在发现这样的结构有一个问题,就是很难统一每个DBML文件所使用的的ConnectionString。因为都是单独设定的。虽然在网上包括MSDN、StackOverflow上看到了一些相关的问题,例如“Multiple LINQ to SQL Classes or one”?但是这些问题的前提都是多个DBML存在于一个Class Library中。

我们的系统其实并不复杂,只使用了一个数据库,表格数目不超过100个。

那么究竟是使用多个Class Library,还是一个呢?

I went to msdn and asked the question:

My ASP.net application uses only 1 sql server 2000 database and no more than 50 tables in it. And I copied an instance of the database to run on my develop PC, so I need to switch the connections between dev and release.
the problem is, i had created multiple class libraries in business layer, each class library has a LINQ to SQL class. now I find it difficult to make all dbml files in different projects use the same connection string. so is my design wrong? Should i only use 1 class library? then if remain to use multiple class libraries, how to ensure the same connectionstring is used when release?

其实这个问题还是“业务层怎么实现”的问题。也就是说,我是不是考虑的太狭隘了,将原本不需要划分成多个class library Peoject的东西“琐碎”化了?
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weilai2800 2012-02-12
  • 打赏
  • 举报
回复
一个或者多个,只要能很好的处理,都无妨!
  • 打赏
  • 举报
回复
是不是时代不同了,搞软件的没有几个正规学过软件工程了?

软件工程中最古老的做法,最入门(甚至过时)的知识,就是告诉你应该合理划分模块。难道一切都要从头学起?
  • 打赏
  • 举报
回复
一个系统,你可以看作就是一个系统,也可以看作是几个子模块(甚至几个子系统)。

这是全在于你的决断,这有什么纠结的呢?

“业务单元”使用同一个数据库,或者各自使用10个数据库,有什么关系在接口上“统一”呢?这些根本不影响业务的接口,这些顶多影响到你的配置文件中是只有一条配置信息还是多条配置信息这种底层实现的层面上。
anzhiqiang_touzi 2012-01-03
  • 打赏
  • 举报
回复
建议:从新包装DataContext禁止缓存跟踪,建立Dao层+实体层+业务处理层+AOP(每个业务逻辑使用一次DataContext,使用完成回收,如果再使用的话就New一个)
xray2005 2009-10-17
  • 打赏
  • 举报
回复
有点烦琐.

你必要一个一个lib啊. 类似的业务可以放一个lib.分类处理一下.


就像衣服的尺码一样,小,中,大,加大等几号,也没见哪个做服装的,按照0-300cm,每个厘米都做一个套吧.

yixianggao 2009-10-17
  • 打赏
  • 举报
回复
那么究竟是使用多个Class Library,还是一个呢?

lz 提出这个问题时就已经有答案,又何必问呢?!

很明显,用一个!!!

为啥?因为 lz 现在用了多个很不爽,否则也就不发此贴了!

软件开发一定要爽,觉得不爽时肯定有问题,需要改变某些东东!
黄汉 2009-10-16
  • 打赏
  • 举报
回复
William Wegerson (www.OmegaCoder.Com)给我的回复:

You need to centralize in each layer a single point of access. Meaning each layer has one DBML connection. One option is to use a singleton pattern to return the datacontext to be used within the layer. That singleton will be responsible for choosing the appropriate connection string to use and the code that consumes the data will be no wiser.

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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