在blazor中使用EfCore延迟加载代理

时间:2020-01-02 19:56:24

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

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

尝试对实体类型延迟加载导航属性“描述” 关联的DbContext被处置后,“ WeatherForecastProxy”。

需要使用懒惰加载代理来避免在主/明细样式用户界面中进行笛卡尔爆炸,因为主列表中的每个实体都有自己的拥有实体的子列表,而子实体又拥有自己的联接。

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

Utility Base Component classhttps://github.com/aspnet/AspNetCore/issues/18076所建议的那样,

https://github.com/aspnet/AspNetCore/issues/10448应该是在组件之间共享服务以避免线程问题的一种解决方案,但它仍然会导致崩溃

在先前的操作完成之前,第二个操作就此上下文开始。 这通常是由使用相同DbContext实例的不同线程引起的。

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

1 个答案:

答案 0 :(得分:0)

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