c# – 关于在Linq中重用db上下文的意见

c# – 关于在Linq中重用db上下文的意见,第1张

概述我有一个使用 linq访问数据库的类.一些方法称其他方法.例如: class UserManager{ public User[] getList() { using(var db = new MyContext()) { return db.Users.Where(item => item.Active == false); 我有一个使用 linq访问数据库的类.一些方法称其他方法.例如:
class UserManager{   public User[] getList()   {       using(var db = new MyContext())       {             return db.Users.Where(item => item.Active == false);       }    }    public User[] addUser(string name)    {       using(var db = new MyContext())       {           db.Users.InsertOnsubmit(new User() { ID = GuID.NewID(),name = name,active = false ...});       }       return getList();    }

在对addUser的调用中,我需要返回新列表. (我知道它不是很好的设计,但为了简单起见,我已经删除了细节.)但是,对getList的调用会创建第二个数据上下文.

我可以用额外的方法填写这个,即:

public getList(){     using(var db = new MyContext())        return getList(db);}public getList(MyContext db){      ...}

然后在addUser中替换我的调用,以保持相同的数据上下文.

我似乎在我的代码中看到了很多类型的东西,我担心创建和释放所有这些数据上下文的成本.有没有人对是否值得投入额外的工作以消除这些背景的创建和删除有意见

解决方法 Microsoft提供以下建议/建议,以避免重用DataContext实例 http://msdn.microsoft.com/en-us/library/bb386929.aspx

常见问题(liNQ to sql)

Connection Pooling

Q. Is there a construct that can help
with DataContext pooling?

A. Do not try to reuse instances of
DataContext. Each DataContext
maintains state (including an IDentity
cache) for one particular edit/query
session. To obtain new instances based
on the current state of the database,
use a new DataContext.

You can still use underlying ADO.NET connection pooling. For more information,see sql Server Connection Pooling (ADO.NET).

总结

以上是内存溢出为你收集整理的c# – 关于在Linq中重用db上下文的意见全部内容,希望文章能够帮你解决c# – 关于在Linq中重用db上下文的意见所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1249703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存