将 EfCore 延迟加载代理与 blazor 结合使用



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

尝试对实体类型延迟加载导航属性"说明" "WeatherForecastProxy"在关联的 DbContext 被释放之后。

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

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

实用程序基础组件类应该是在组件之间共享服务以避免线程问题的解决方案,正如在 https://github.com/aspnet/AspNetCore/issues/18076 和 https://github.com/aspnet/AspNetCore/issues/10448 中建议的那样,但它仍然会导致崩溃

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

我是否正确使用了该实用工具基组件类功能,还是以意外的方式使用 efcore/blazor 组合?

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

最新更新