|
22
|
| hIpPy · 技术社区 · 16 年前 |
|
1
11
与其他内容相比,数据上下文的创建成本可能很高。但是,如果你完成了它,并希望尽快关闭连接,这将做到这一点,从上下文中释放任何缓存的结果。记住,不管是什么,你都在创建它,在这种情况下,你只是让垃圾收集器知道还有更多的免费东西要处理。 DataContext被设计成一个短期使用的对象,使用它,完成工作单元,退出……这正是您使用它所做的。 所以优点是:
缺点-更多代码?但那不应该是威慑,你用的是
如果您需要使用
|
|
|
2
5
嗯,这是一个
|
|
|
3
5
更不用说,在每个数据上下文后面都是您从DB请求的所有对象的标识图(您不想一直这样)。 DataContext的整个概念是 工作单位 具有 开放式并发 . 将其用于短交易(仅一个提交)和处置。 避免忘记释放的最佳方法是使用()。 |
|
|
4
3
我取决于您的数据层的复杂性。如果每个调用都是一个简单的查询,那么每个调用都可以像在您的问题中那样包装在使用中,这样就可以了。 另一方面,如果您的数据层可以期望业务层发出多个连续调用,那么您最终将为每个较大的调用序列重复创建/处理数据上下文。不理想。 我所做的是将数据层对象创建为IDisposable。创建后,将创建DataContext(或在对方法进行第一次调用后创建),当数据层对象释放时,将关闭并释放DataContext。 它看起来是这样的:
|
|
|
5
1
在一个特定的应用程序中,我体验到,在不包装
在这个示例中,我无法释放DataContext,因为
所有的
对于我来说,丑陋的Kluge是在foreach循环之后移除q对象的所有实体引用。更好的方法当然是使用
就我的经验而言,我会说使用
|
|
Leon · 声明类的成员函数的命名类型[重复] 2 年前 |
|
|
AAA · 使用雄蕊在网络内部循环 2 年前 |
|
|
Jeff · 在C++中从函数typedef生成函数指针typedef? 12 年前 |
|
|
allanmb · 在C#中嵌套的“using”等同于typedef 13 年前 |