【问题标题】:Objectcontext and foreignkey-relationships in multi-tier webapp多层 Web 应用程序中的对象上下文和外键关系
【发布时间】:2010-10-05 19:58:21
【问题描述】:

我正在使用实体框架 4 创建一个 webapp。据我从广泛的谷歌搜索中得知,最佳实践是在使用 objectcontext 时创建并终止它,并且不要让它存活太久。所以在我的数据层中,我正在做类似的事情:

使用 (var context = new MyDAO()) { 我的代码 } 立即创建和终止上下文。

我喜欢实体框架的一件事是能够直接在您的代码中使用相关对象(例如 Account.Employees)。问题是,当我尝试在我的演示层中执行此操作时,它会引发异常,因为上下文不再可用,因此它无法获取该帐户的员工。我已经尝试在我的数据层中的上下文上启用延迟加载,但它似乎不起作用。

所以我的问题是,我如何让关系(惰性)加载到不同的层?

谢谢 托马斯

【问题讨论】:

    标签: entity-framework entity-framework-4


    【解决方案1】:

    您必须在关闭上下文之前加载所需的一切。

    这是 EF 中的设计决策。任何对象的加载都应该受到控制,而不是间接发生。这通常会提供更具可扩展性的解决方案。

    编辑

    感谢您的评论。

    这些设置取决于上下文。所以你仍然需要打开上下文。一种方法是在顶层打开上下文并将其作为参数发送。

    【讨论】:

    • 谢谢。我认为这在 EF4 中已经通过自我跟踪实体和 LazyLoadingEnabled 设置 (msdn.microsoft.com/en-us/library/dd456846.aspx) 发生了变化?
    • 如何在整个应用程序中得到最好的处理?例如。这是否意味着上下文应该为用户的整个会话、每页或其他内容而存在,如果是这样,这将如何影响性能?谢谢
    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    相关资源
    最近更新 更多