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

时间:2011-07-06 06:00:05

标签: linq-to-sql

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

1 个答案:

答案 0 :(得分:6)

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

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