快速业务通道

ASP.Net中Ado.Net Entity Framework实际项目应用释疑

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-14
用户控件界面:

image52

用户控件界面中仅包含一个ListView控件。

(为了简单起见,ul中的li代码将由后台生成,然后直接绑定到这里)

接着是后台代码:

 image60

注意,这里定义了一个ObjectContext属性,程序将通过该属性访问数据库及业务逻辑层,但该属性并未在这里初始化,而是要由使用此用户控件的页面初始化该属性。

接下来编写页面前台代码:

image64

简单的放置并配置了两个EntityDataSource及ListView,并放置了一个前面创建的用户控件。

后台代码:

image68

这里也同样设置了一个ObjectContext属性,并在蓝色高亮处重写了OnInit,在其中进行初始化,并赋值给用户控件,然后在绿色高亮处重写了Dispose,对ObjectContext进行释放。

这样用户控件就将和页面使用同一个ObjectContext对象了。

然而,每个EntityDataSource还都会自己创建ObjectContext连接数据库,这显然不合我们的期望,解决办法是分别注册它们的ContextCreating、ContextDisposing事件,做如下处理:

image72

这样页面虽然多次在不同的位置访问数据库,但仅使用一个ObjectContext、一个数据库连接。

执行结果:

image90

如何在多个ObjectContext共享一个数据库连接?

EntityConnection即代表一个数据库连接,可以通过创建EntityConnection对象,并将其分配给多个ObjectContext对象,实现多ObjectContext共享单连接,具体方法可参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb738582.aspx

多ObjectContext共享一个连接,与整页面共享一个ObjectContext有什么不同呢?

一般来说感觉不到什么不同,但当你将更改提交到数据库时,单个ObjectContext将维护全部相关事务,一旦提交失败将全部回滚,而多个ObjectContext就可以分别处理各自的事务,相比之下更具灵活性。

结语

在这里我仅以自己的经验总结而出了一些问题和解决方案,若有其他疑问欢迎补充,共同探讨。

针对上面的问题,如有更好的解决方案的话,也欢迎赐教。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号