使用linq数据上下文的最佳方法是什么?链接如何与sql连接一起工作(何时打开连接以及何时关闭连接)?当我使用数据上下文时,我是否应该使用using语句?
对不起,问题列表.提前致谢.
这里有很多内容 - 我会给你我的盆景 - 然后给你一些链接等,以帮助你进一步.
不过,在这个网站上还有很多其他类似的问题 - 搜索也是如此,你会发现更多.
一生
您不需要使用using带有Linq-To-Sql DataContext 的语句,但是在完成后必须将其处理掉.因此,使用块是最好的方法,因为它的尝试... finally {}语义.所以,在我看来你应该使用一个using块.
你应该不保留的LINQ to SQL数据上下文打开的很长一段时间,因为发生在每个对象的情况下打开更改跟踪的-它损害的表演,并可能导致意外的行为.
据我所知,Sql Connection在构造上下文时打开,在处理时关闭.
因此,当您想要选择,插入,更新或删除数据时,应该打开linq to sql context,然后在完成后关闭它.例如,通过同一个DC插入100条记录就可以了.正如更新或删除一样.但是,我可能不会选择一种类型的几千条记录,更新几千条记录,然后在一个上下文中删除另外一条记录 - 主要是出于性能原因.
相关数据
如果您有相关数据 - 即表A - >表B,那么当从A上的子属性访问时,知道DataContext(DC)的默认值是延迟加载B中的相关行.因此,如果您打算将你的一个linq传递回sql生成的类,在创建和处理用于选择的DC的代码之外,你可以得到ObjectDisposedException抛出.
为避免这种情况,您可以使用DataLoadOptions.LoadWith <>和DataLoadOptions.AssociateWith <>来缓解这种情况 - 当选择一行时,会强制预取相关行.但是,这可能会增加Linq To Sql查询从数据库中读取的数据量,因此您通常不会始终为所有查询应用所有相关记录的预取 - 仅限于您知道需要它们的那些查询.
对不起,我没有提供代码示例或其他任何内容 - 在一个答案中有很多内容 - 但这里有一些链接:
Rick Strahl谈论Linq To Sql DC的生命周期
Scott Guthrie - 9部分Linq to SQL系列 - 这是他在博客上搜索的一个问题 - 向下滚动,翻页,你会发现所有不同的部分,从2007年5月的第1部分开始.
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |