创建静态Datacontext()或在需要时创建.哪个更好?为什么?

sri*_*sri 3 linq-to-sql

我有一个函数,在里面我DataContext()每次调用函数时都会创建一个函数.创建一个的成本是多少new DataContext().我可以创建static DataContext()并在任何地方使用它.因为当SubmitChanges()失败时,DataContext会对所有更改进行完整记录,有没有办法可以从失败DataContext时删除这些特定的更改SubmitChanges().我的问题哪个更好Creating static Datacontext()还是Creating whenever its needed

BC.*_*BC. 6

这个主题已经讨论了很多,你应该阅读这篇关于DataContext生命周期管理的文章.简短的回答是,DataContext它意味着用于工作单元,通常是单个请求.DataContext对象构造起来很便宜,并且创建一个对象没有数据库开销.

避免共享实例的主要原因DataContext是因为线程安全和更改跟踪.您对存储库对象所做的每个修改都会被捕获,并在您调用时转换为更新/插入/删除操作SubmitChanges().使用单个DataContext对象时,此功能会中断.