【问题标题】:Using EfCore lazy-loading proxies with blazor将 EfCore 延迟加载代理与 blazor 一起使用
【发布时间】:2020-04-21 11:12:53
【问题描述】:

我在使用 Blazor 的 EfCore 中使用代理时遇到问题。如果在页面加载后的某个时间将对象传递给正在访问其代理属性的子组件,则上下文可能已经被释放,从而导致崩溃

尝试延迟加载实体类型上的导航属性“描述” 释放关联的 DbContext 后的“WeatherForecastProxy”。

需要延迟加载代理以避免主/详细样式用户界面中的笛卡尔爆炸,其中主列表中的每个实体都有自己的拥有实体的子列表,而这些子列表又拥有自己的连接。

基于官方 blazor 模板的最小可复现项目位于:https://github.com/alextech/sample_use_proxy_blazor

Utility Base Component class 应该是组件之间共享服务以避免线程问题的解决方案,正如 https://github.com/aspnet/AspNetCore/issues/18076https://github.com/aspnet/AspNetCore/issues/10448 所建议的那样,但它仍然会导致崩溃

在前一个操作完成之前,在此上下文中启动了第二个操作。 这通常是由使用相同 DbContext 实例的不同线程引起的。

我是在正确使用该实用程序基础组件类功能,还是以非预期方式使用 efcore/blazor 组合?

【问题讨论】:

标签: c# blazor ef-core-3.0 ef-core-3.1


【解决方案1】:

不要将 DAL 模型直接传递到您的组件中,先将它们映射到 ViewModel 中,这是最佳实践。 如果您尝试从 Webassembly 客户端应用程序访问您的 DAL 模型,这是不可能的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多