代码之家  ›  专栏  ›  技术社区  ›  AndreasKnudsen

带有实体框架的ASP.NET MVC

  •  6
  • AndreasKnudsen  · 技术社区  · 17 年前

    我认为在应用程序开始请求中设置实体对象上下文,将其存储在request.items中,在整个请求中使用它,并在应用程序结束请求中处理它是明智的。这样,上下文总是可用的,我可以在我的视图中导航实体框架对象图,懒惰地加载我尚未渴望获取的内容。

    我认为这会使它像在发展 Ruby on Rails .

    我说这种异端邪说可能会被枪毙,但这太疯狂了,可能会奏效。)

    我无法让应用程序启动 ASP.NET MVC 不过。他们不是被解雇了吗?我需要做什么特别的把戏吗?

    2 回复  |  直到 16 年前
        1
  •  6
  •   Brad Wilson    17 年前

    EF中的对象上下文与L2S中的数据上下文一样,被设计为“工作单元”,它们不是线程安全的,也不是设计为长寿的。

    在MVC中,最好的策略是在控制器的构造函数中创建一个(隐式或显式,不重要),然后在Dispose方法中处理它。当然,英孚不做懒惰的加载,所以你必须找到自己的方式懒惰。:)

        2
  •  5
  •   Peter Mortensen Pieter Jan Bonestroo    16 年前

    ASP.NET MVC的1.0版本允许我在BeginRequest和EndRequest上挂接事件处理程序,更新会话作用域并将其存储在httpContext中。BeginRequest中的项(我切换到Castle ActiveRecord)和EndRequest中的项从httpContext.items中选取会话作用域并进行处理。这使得可以在整个请求生命周期中延迟加载。(甚至可以在视图中导航对象图形。)