Ho la seguente configurazione ma non riesco a terminare la Blazor.MonoRuntime.targets
poiché ottengo un oscuro errore relativo alla riga 439 nel file Blazor.MonoRuntime.targets
(MSB3073).
Ciò significa essenzialmente che Entity Framework Core non funzionerà in alcun modo con l'anteprima 6 di Blazor?
Dettagli:
- Asp.net ha ospitato 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)
Risolto tramite una soluzione di hacking!
In qualche modo sono stato in grado di risolvere tutto e far funzionare le cose end-to-end. Credo che la cosa grande e critica sia stata:
* Assicurarsi che i progetti client e server Blazor non facciano direttamente riferimento a Entity Framework
* Non lasciare che il cliente Blazor faccia riferimento (direttamente o indirettamente) al progetto con le entità generate). Per accedere ai modelli, ho solo creato un duplicato delle entità generate (e rimosso il "parziale" dalle classi che sono state generate)
Qui sono necessari alcuni chiarimenti, giusto:
Non è possibile utilizzare Entity Framework sul progetto Client di Blazor. Entity Framework è una tecnologia server.
È possibile utilizzare Entity Framework sul progetto Server dell'applicazione.
La comunicazione tra il lato client e il lato host del server viene normalmente effettuata tramite chiamate Http (servizio HttpClient), ma è anche possibile utilizzare SignleR.
Per abilitare le chiamate Http è necessario esporre gli endpoint di routing Http ... Questo può essere abilitato utilizzando Web Api con gli endpoint richiesti. I metodi esposti Web Api (metodi dei controllori) possono accedere direttamente al database (o indirettamente se si definiscono repository, servizi, ecc.) Tramite oggetti Entity Framework e restituire i dati richiesti ai metodi chiamanti (metodi HttpClient).
Nota che nella mia risposta mi riferisco in particolare alle app lato client di Blazor, ma è soprattutto vero per quanto riguarda le app lato server di Blazor. Posso solo aggiungere qui che nelle app lato server Blazor non è necessario utilizzare Web Api poiché Blazor viene eseguito sul server. In tal caso, è possibile definire un servizio normale per recuperare i dati dal database e passarli ai metodi di chiamata (qui non è coinvolto HttpClient).
Spero che sia di aiuto..