我是.NET Core和Blazor的新手,主要拥有WebForms和MVC经验。
我发现的所有Blazor文档和教程都使用单独的API项目,并通过HttpClient和Json序列化/反序列化访问数据。我知道为什么对于使用WebAssembly的客户端Blazor来说这是必需的,但是对于使用SignalR的 Server-Side Blazor来说,使用实体框架直接从组件的.razor文件访问数据库的最佳方法是什么dbContext?
例如,在MVC控制器中,您可以执行以下操作:
private ApplicationDbContext context = new ApplicationDbContext();
,然后通过执行以下操作来查询数据:
var things = context.Things.Where(t => t.ThingAttributes == something);
在服务器端Blazor中使用组件时,有没有一种这样干净高效的方法?
很抱歉这个问题的广泛性,请随时向我指出我应该已经阅读的博客,文档或教程。谢谢!
答案 0 :(得分:3)
您所说的控制器应该变成一个服务类,该服务类从数据库中检索数据,并将其传递给调用方法。您应该将此服务添加到Startup类的DI容器中。要在您的组件中使用此服务,您应该像这样注入它:
@inject DataService myDataService
我认为Blazor模板随附了如何定义此类服务并将其用于组件的示例。
Here's a link,由Blazor团队提供示例,介绍如何创建服务以及如何在组件中使用它。该服务未使用Entity Framework,但这确实是次要的事情,我相信您会解决的。