我有以下设置,但是由于我在文件Blazor.MonoRuntime.targets
中的第439行(MSB3073(中获得了晦涩难懂的错误,因此无法完成构建。
这实际上意味着实体框架核心绝不会与Blazor Preview 6?
一起使用详细信息:
- ASP.NET托管了jlazor
- 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客户端项目上使用实体框架。实体框架是服务器技术。
-
您可以在应用程序的服务器项目上使用实体框架。
-
您的客户端和服务器托管方之间的通信通常是通过HTTP调用(HTTPCLIENT服务(完成的,但是您也可以使用Signler。
-
要启用HTTP调用,您应该将HTTP路由端点公开...可以通过将Web API与所需的端点一起使用Web API启用。您的Web API曝光方法(控制器的方法(可以通过实体框架对象直接访问数据库(或间接定义存储库,服务等(,并将查询数据返回到调用方法(HTTPCLEINT方法(。
请注意,在我的答案中,我特别与大火客户端应用有关,但对于Blazor Server Specs Apps,这主要是正确的。我可能只是在这里补充说,由于在服务器上执行了Blazor,因此您不必使用Web API。在这种情况下,您可以定义一个普通服务以从数据库中检索数据,并将其传递到调用方法(此处不涉及HTTPCLEINT(。
- 共享项目旨在包含前端和后端都可以使用的对象。这是您可以定义模型对象的地方。例如,您可以定义一个可用于检索数据并将其作为员工对象列表传递给客户端的员工类,在客户端中,您可以定义一个将存储已检索数据的员工对象列表。简而言之,您不必定义两种类型的对象,一种适合服务器,一种适合客户端(例如,您的客户端是一个角度应用程序(。
希望这会有所帮助..