Je suis nouveau sur .NET Core et Blazor, avec principalement une expérience WebForms et MVC.
Toute la documentation et les tutoriels de Blazor que j'ai trouvés utilisent un projet d'API distinct et accèdent aux données via la sérialisation / désérialisation HttpClient et Json. Je vois pourquoi cela serait nécessaire pour Blazor côté client utilisant WebAssembly, mais pour Blazor côté serveur utilisant SignalR, quelle est la meilleure façon d'accéder à la base de données directement à partir des fichiers .razor des composants en utilisant un Entity Framework DbContext?
Par exemple, dans un contrôleur MVC, vous pouvez simplement faire quelque chose comme:
private ApplicationDbContext context = new ApplicationDbContext();
puis interrogez les données en faisant quelque chose comme:
var things = context.Things.Where(t => t.ThingAttributes == something);
Existe-t-il une approche aussi propre et efficace lorsque vous travaillez avec des composants dans Blazor côté serveur?
Désolé pour la nature générale de cette question, n'hésitez pas à me diriger vers des blogs, des documents ou des didacticiels que j'aurais déjà dû lire. Merci!
Ce que vous appelez un contrôleur doit être transformé en classe de service, qui récupère les données de la base de données et les transmet aux méthodes d'appel. Vous devez ajouter ce service au conteneur DI dans la classe de démarrage. Pour utiliser ce service dans vos composants, vous devez l'injecter comme ceci:
@inject DataService myDataService
Je pense que les modèles Blazor sont fournis avec des exemples de définition d'un tel service et de son utilisation dans vos composants.
Voici un lien vers un exemple de l'équipe Blazor comment créer un service et comment l'utiliser dans vos composants. Le service n'utilise pas Entity Framework, mais c'est quelque chose de vraiment mineur, je suis sûr que vous y ferez face.