当前位置:  开发笔记 > 后端 > 正文

Linq to SQL:为每个页面或全局页面设置一个小的DataContext会更好吗?

如何解决《LinqtoSQL:为每个页面或全局页面设置一个小的DataContext会更好吗?》经验,为你挑选了1个好方法。

我在一个ASP.NET应用程序中尝试使用Linq to SQL,该应用程序使用带有大量外键(100多个表)的大型数据库.令我印象深刻的是Linq如何允许您创建一个包含所有关系的datacontext,然后创建自动连接表的Linq语句.但是,这会产生一个问题:如果我提交的Linq语句只适用于一个或两个表,那么拥有一个只有必要表/表的datacontext会更好吗?在我看来,如果我使用数据库中的所有表构建一个datacontext,它将非常庞大,并且每次使用Linq加载它都会对性能产生负面影响.我对吗?

评论:我知道只在需要的时候创建datacontext(但是,尽管如此,还是要提及它).问题在于我是否应该拥有大量的小数据文件,或者是否可以构建一个大数据文件.



1> Sander..:

每组连接表应该有一个DataContext .在大多数应用程序中,这意味着一个DataContext用于所有内容.如果您碰巧有几组表不需要一起修改,那么您可能会考虑几个DataContexts.如果您甚至可能需要跨DataContexts进行查询,请不要将它们分开.

DataContext不仅仅是一组表 - 它是数据网关模式的一种实现 - 您可以使用返回所需数据的方法填充它,因此您不必将查询硬编码到您的每个角落.应用.现在,如果你有多个DataContexts,每页一个,你很可能最终不得不在每一个中坚持你的常用功能(想想MyDataContext.GetActiveCustomers()).这将是可怕的重复.

所以答案是构建许多小型DataContexts通常都不行.只有当您的数据完全独立(不同的逻辑或物理数据库)或者您将DataContext简单地用作Connection对象时,这才是可行的,而这并不是理所当然的.

但请注意,DataContexts应该是短暂的 - 它们是工作单元模式的实现,因此它们的生命周期应该等于一个逻辑操作(例如,加载一组产品或插入新订单).DataContexts创建和销毁成本低廉,因此不要浪费时间缓存它们.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有