【发布时间】:2019-11-13 06:36:49
【问题描述】:
我有以下设置,但无法完成构建,因为我在文件 Blazor.MonoRuntime.targets (MSB3073) 中收到与第 439 行相关的模糊错误。
这是否意味着 Entity Framework Core 将无法与 Blazor 预览版 6 一起使用?
详情:
- Asp.net 托管 Blazor
- AspNetCore.Blazor (3.0.0-preview6.19307.2)
- Microsoft.EntityFrameworkCore (3.0.0-preview6.19304.10)
- Microsoft.EntityFrameworkCore.Design (3.0.0-preview6.19304.10)
- Microsoft.EntityFrameworkCore.SqlServer (3.0.0-preview6.19304.10)
通过黑客解决方案解决!
不知何故,我能够解决所有问题并使事情顺利进行 端到端。我相信重要的、关键的事情是:
* 确保 Blazor 客户端和服务器项目不直接引用实体框架
* 不要让 Blazor 客户端引用(直接或间接)带有生成实体的项目)。为了访问模型,我 只需创建生成实体的副本(并删除 “部分”来自生成的类)
【问题讨论】:
-
您是否尝试使用 Blazor 客户端的 EntityFramework?如果是这样,这是不可能的。
-
我希望 Blazor 服务器项目与数据层项目通信(通过 API)。我通过这个数据项目中的脚手架生成了 EF 数据上下文。所以现在我有数据项目(具有生成的数据库上下文)和服务器项目(具有 EF6 引用,因为脚手架需要它)。
-
你的“黑客解决方案”真的很糟糕。只需查看 Hosted starter 模板。当然服务器部分可以使用EF。 DTO 模型是个好主意,但不是必需的。
-
@HenkHolterman - 你能提出更好的方法吗?
-
我已经做到了。托管应用程序的服务器部分可以并且应该引用 EF。代码优先模型是完全独立的,因此它可以位于共享部分,但更好的架构表明它不应该。最好的数据库模型有点难以摆脱 EF,但您所做的还算不错。但请注意,DTO 不必是实体类的精确副本。根据需要展平和省略。
标签: entity-framework-core blazor