gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:28 24 4
gpt4 key购买 nike

我目前在我的 blazor 应用程序中有一个服务和一个 blazor 组件,它从数据库 View 中检索数据并允许用户更新数据。伟大的!那是向下一页。现在我有更多的东西可以做同样的事情。在我的项目中,每个数据库 View 都有一个模型。

我的问题是,我是否必须为每个模型创建一个服务?当然,有一种方法可以提供某种通用服务,只需传入模型即可与之交互。我不太确定我应该搜索什么来在线查找帮助。如果有人能为我指出正确的方向,我将不胜感激。

代码设置

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();
}
}
}

最佳答案

而不是这个

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

你可以用

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

(或将 <T> 移至类(class)级别)。

关于c# - 如何在 asp.net core blazor 的通用服务中使用任何模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58939639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com