在查询对象上封装上下文构造函数


创建一个

类,该类将查询和上下文构造函数同时保存为上下文的 Func 和 Func of IQueryable of TEntity 来解决上下文生存期问题,这是一个好主意?

例:在数据层上,如果使用"using"语句对每个方法使用一个上下文,则无法返回 IQueryables,因为这在上下文发布后无效,这会让您使用:

  • 每个表单一个上下文(这需要将表单上下文注入到数据层)
  • 线程静态上下文
  • 在返回查询之前调用 ToList() (禁用查询组合)

据我所知,上下文被设计为根据需要创建和重新创建,而不是静态保存在内存中(尽管我也这样做过)。 我发现在我的类中创建一个上下文(例如 MVC 应用程序的控制器类,甚至是视图模型类)通常完全没问题,然后让所有方法都使用它。

但是,如果您想为所有用户缓存大量静态数据,我会将其静态保存在内存中。 正如你提到的,你只需要考虑线程。 如果是只读,则可以创建只读锁来访问此数据(而不是 C# lock{})。

有关静态的更多详细信息:https://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock(v=vs.110).aspx

在大多数情况下,您实际上并不需要处理它们 - 这是设计使然 https://stackoverflow.com/a/389871/1236397

最新更新