Tengo la siguiente configuración, pero no puedo terminar de Blazor.MonoRuntime.targets
aparece un oscuro error relacionado con la línea 439 en el archivo Blazor.MonoRuntime.targets
(MSB3073).
¿Significa esto esencialmente que Entity Framework Core no funcionará de ninguna manera con Blazor preview 6?
Detalles:
- Asp.net Hosted 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)
Resuelto a través de una solución de hack!
De alguna manera pude resolver todo y hacer que las cosas funcionen de punta a punta. Creo que lo grande y crítico fue:
* Asegúrese de que los proyectos de cliente y servidor Blazor no hagan referencia directa a Entity Framework
* No permita que el cliente Blazor haga referencia (directa o indirectamente) al proyecto con las entidades generadas). Para obtener acceso a los modelos, simplemente creo un duplicado de las entidades generadas (y eliminé el "parcial" de las clases que se generaron)
Se necesita alguna aclaración aquí, a la derecha:
No puede usar Entity Framework en el proyecto de cliente de Blazor. Entity Framework es una tecnología de servidor.
Puede usar Entity Framework en el proyecto del servidor de su aplicación.
La comunicación entre el lado del Cliente y el lado del servidor se realiza normalmente a través de llamadas Http (servicio HttpClient), pero también puede emplear SignleR.
Para habilitar las llamadas Http, debe exponer los puntos finales de enrutamiento Http ... Esto se puede habilitar utilizando Web Api con los puntos finales requeridos. Sus métodos expuestos de Web Api (métodos de los Controladores) pueden acceder a la base de datos directamente (o indirectamente si define repositorios, servicios, etc.) a través de objetos de Entity Framework y devolver los datos consultados a los métodos de llamada (métodos HttpClient).
Tenga en cuenta que en mi respuesta me relaciono particularmente con las aplicaciones del lado del cliente de Blazor, pero es principalmente cierto con respecto a las aplicaciones del lado del servidor de Blazor. Puedo agregar aquí que en las aplicaciones del lado del servidor de Blazor no tienes que usar Web Api ya que Blazor se ejecuta en el servidor. En tal caso, puede definir un servicio normal para recuperar los datos de la base de datos y pasarlos a los métodos de llamada (no HttpClient involucrado aquí).
Espero que esto ayude..