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

时间:2015-04-23 01:55:54

标签: c# linq entity-framework design-patterns

最好创建一个包含查询和上下文构造函数的类作为上下文的Func和TEuity的IQueryable的Func来解决上下文生存期问题吗?

实施例: 在您的数据层上,如果您使用"使用"每个方法使用一个上下文声明,您无法返回IQueryables,因为在上下文发布后这不会有效,这使您可以使用:

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

1 个答案:

答案 0 :(得分:1)

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

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

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

  在大多数情况下,你真的不需要处理它们 - 这是设计的   https://stackoverflow.com/a/389871/1236397