如何在asp.net core blazor中的通用服务中使用任何模型

问题描述 投票:0回答:1

我目前在blazor应用程序中具有一个服务和一个blazor组件,该组件从数据库视图中检索数据并允许用户更新数据。大!这是下一页。现在,我还有很多可以做相同的事情。在我的项目中,每个数据库视图都有一个模型。

我的问题是,我必须为每个模型创建服务吗?当然,有一种方法可以提供某种通用服务,其中一个人可以简单地传入模型进行交互。我不太确定应该在网上寻找帮助的内容。如果有人甚至可以将我指向正确的方向,我将不胜感激。

代码设置

namespace AdministrationWebApplication.Models.Settings
{
    public partial class FlowSettingsView
    {
        public byte SettingId { get; set; }
        public string SettingName { get; set; }
        public object SettingValue { get; set; }
    }
}


namespace AdministrationWebApplication.Data
{
    public partial class ApplicationDbContext : IdentityDbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        public virtual DbSet<FlowSettingsView> FlowSettingsView { get; set; }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
          base.OnModelCreating(modelBuilder);
          ...
        }
    ...
}

namespace AdministrationWebApplication.Services
{
    public class DataService
    {
        protected ApplicationDbContext _context { get; private set; }

        public DataService(ApplicationDbContext context)
        {
            _context = context;
        }
    }
}

namespace AdministrationWebApplication.Services
{
    public class SettingsService : DataService
    {
        public SettingsService(ApplicationDbContext context) : base(context) {}

        public async Task<List<FlowSettingsView>> GetSettingsAsync()
        {
            return await _context.FlowSettingsView.ToListAsync();
        }

        public async Task<int> UpdateSettingsAsync(List<FlowSettingsView> flowSettingsView)
        {
            _context.FlowSettingsView.UpdateRange(flowSettingsView);           
            return await _context.SaveChangesAsync();
        }
    }
}

要了解我想做什么,请查看此版本的服务类:

namespace AdministrationWebApplication.Services
{
    public class GenericDataService : DataService
    {
        AnyModel _anyModel;

        public GenericDataService(ApplicationDbContext context, AnyModel anyModel) : base(context) 
        {
         _anyModel = anyModel;
        }

        public async Task<List<AnyModel>> GetDataAsync()
        {
            return await _context.AnyModel.ToListAsync();
        }

        public async Task<int> UpdateAnyModelAsync(List<AnyModel> anyModel)
        {
            _context.AnyModel.UpdateRange(anyModel);           
            return await _context.SaveChangesAsync();
        }
    }
}
c# asp.net blazor
1个回答
0
投票

您的问题与Blazor无关。您应该照常编码。创建服务,可能是存储库,可能是通用存储库等。只需执行通过Razor Pages或MVC创建应用程序时通常执行的操作即可。

话虽如此,我提到您使用Blazor WebAssembly Apps时,通常会使用HttpClient服务(执行HTTP调用)从访问数据服务或存储库的Web ApI方法中检索数据。

如果您的应用是Blazor Server,则可以跳过Web Api调用的使用,而直接调用服务。

© www.soinside.com 2019 - 2024. All rights reserved.