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

Encapsulate context constructor on a query object

创建一个 class 来保存查询和上下文构造函数作为 Context 的 Func 和 TEntity 的 IQueryable 的 Func 来解决上下文生命周期问题是个好主意吗?

示例: 在您的数据层上,如果您使用 "using" 语句为每个方法使用一个上下文,则不能 return IQueryables 因为在释放上下文后这将无效,这使您可以使用:

据我所知,上下文旨在根据需要创建和重新创建,而不是静态地保存在内存中(尽管我也这样做过)。我发现在我的 class 中创建上下文通常非常好(例如控制器 class,甚至是 MVC 应用程序的视图模型 class),然后让所有方法都使用它.

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

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

you don't really need to dispose of them in most cases - and that's by design