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

ale*_*ech 9 c# blazor ef-core-3.0 ef-core-3.1

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

在处理关联的 DbContext 后,尝试延迟加载实体类型“WeatherForecastProxy”上的导航属性“Description”。

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

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

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

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

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

小智 -1

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