如何在服务器端Blazor组件中访问Entity Framework DbContext实体

时间:2020-01-18 22:27:18

标签: entity-framework-core blazor blazor-server-side

我是.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中使用组件时,有没有一种这样干净高效的方法?

很抱歉这个问题的广泛性,请随时向我指出我应该已经阅读的博客,文档或教程。谢谢!

1 个答案:

答案 0 :(得分:3)

您所说的控制器应该变成一个服务类,该服务类从数据库中检索数据,并将其传递给调用方法。您应该将此服务添加到Startup类的DI容器中。要在您的组件中使用此服务,您应该像这样注入它:

@inject DataService myDataService

我认为Blazor模板随附了如何定义此类服务并将其用于组件的示例。

Here's a link,由Blazor团队提供示例,介绍如何创建服务以及如何在组件中使用它。该服务未使用Entity Framework,但这确实是次要的事情,我相信您会解决的。