如何在服务器端 Blazor 组件中访问 Entity Framework DbContext 实体
How to access Entity Framework DbContext entities in Server-Side Blazor Components
我是 .NET Core 和 Blazor 的新手,主要有 WebForms 和 MVC 经验。
我发现的所有 Blazor 文档和教程都使用单独的 API 项目并通过 HttpClient 和 Json serialization/deserialization 访问数据。我明白为什么这对于使用 WebAssembly 的客户端 Blazor 是必要的,但是对于使用 SignalR 的 Server-Side Blazor,什么是直接从组件的 .razor 文件访问数据库的最佳方式Entity Framework DbContext?
例如,在 MVC 控制器中,您可以执行如下操作:
private ApplicationDbContext context = new ApplicationDbContext();
然后通过执行以下操作查询数据:
var things = context.Things.Where(t => t.ThingAttributes == something);
在服务器端 Blazor 中使用组件时,有没有一种方法如此干净高效?
对于这个问题的广泛性,我们深表歉意,请随时向我指出我应该已经阅读过的博客、文档或教程。谢谢!
你所谓的控制器应该变成一个服务 class,它从数据库中检索数据,并将其传递给调用方法。您应该将此服务添加到 Startup class 中的 DI 容器中。要在您的组件中使用此服务,您应该像这样注入它:
@inject DataService myDataService
我认为 Blazor 模板附带了如何定义此类服务并在您的组件中使用它的示例。
Here's a link 到 Blazor 团队的示例,了解如何创建服务以及如何在您的组件中使用它。该服务不使用 Entity Framework,但这是非常小的事情,我相信您会处理的。
我是 .NET Core 和 Blazor 的新手,主要有 WebForms 和 MVC 经验。
我发现的所有 Blazor 文档和教程都使用单独的 API 项目并通过 HttpClient 和 Json serialization/deserialization 访问数据。我明白为什么这对于使用 WebAssembly 的客户端 Blazor 是必要的,但是对于使用 SignalR 的 Server-Side Blazor,什么是直接从组件的 .razor 文件访问数据库的最佳方式Entity Framework DbContext?
例如,在 MVC 控制器中,您可以执行如下操作:
private ApplicationDbContext context = new ApplicationDbContext();
然后通过执行以下操作查询数据:
var things = context.Things.Where(t => t.ThingAttributes == something);
在服务器端 Blazor 中使用组件时,有没有一种方法如此干净高效?
对于这个问题的广泛性,我们深表歉意,请随时向我指出我应该已经阅读过的博客、文档或教程。谢谢!
你所谓的控制器应该变成一个服务 class,它从数据库中检索数据,并将其传递给调用方法。您应该将此服务添加到 Startup class 中的 DI 容器中。要在您的组件中使用此服务,您应该像这样注入它:
@inject DataService myDataService
我认为 Blazor 模板附带了如何定义此类服务并在您的组件中使用它的示例。
Here's a link 到 Blazor 团队的示例,了解如何创建服务以及如何在您的组件中使用它。该服务不使用 Entity Framework,但这是非常小的事情,我相信您会处理的。