Singleton模式与数据访问等问题……请高手解答
前文:小弟做了一个项目,是多层结构的,各个层都使用了Singleton模式,以减少对象建立的开销,并且保证数据的一致性,但后来出现了一个问题~~
原因:由于我在数据访问组件中实现了一个内置的连接持续功能,就是page开始的时候打开连接,结束的时候断开,这样才可以使用SELECT @@IDENTITY来获取新建ID,否则在各层中多处打开并关闭连接的话,SELECT @@IDENTITY将无法跨层使用。。。
问题:于是出现了这样的问题,使用Singleton的情况下,逻辑层对象仅仅建立一次,所以第一次访问便没有问题,可以后再访问的时候,数据连接组件对象就被默认加到了逻辑层的单例中了,我试图在非新建对象的情况下,让逻辑层替换掉数据访问对象,结果居然没有任何效果。。。于是,我索性将数据访问组件也搞成Singleton的了。。。这下问题解决了,但我很担心,这样会不会导致并发容量变得很小?以及DataReader的时候独占了数据访问对象中的数据连接?望高手给予答复,谢谢。