我有一个函数,在里面我每次调用函数时都会创建一个DataContext()
。创建new DataContext()
的成本是多少。我可以创建static DataContext()
并在任何地方使用它。因为当SubmitChanges()失败时,DataContext会对所有更改进行完整记录,所以我可以在DataContext
失败时从SubmitChanges()
中删除这些特定更改。我的问题更好Creating static Datacontext()
或Creating whenever its needed
?
答案 0 :(得分:6)
本主题已经讨论了很多,您应该read this article关于DataContext生命周期管理。简短的回答是DataContext
意味着用于工作单元,通常是单个请求。 DataContext对象构造起来很便宜,并且创建一个对象没有数据库开销。
避免共享DataContext
实例的主要原因是线程安全和更改跟踪。当您调用SubmitChanges()
时,将捕获对存储库对象所做的每个修改并将其转换为更新/插入/删除操作。使用单个DataContext
对象时,此功能会中断。