You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net Core中快速将DBContext实体数据绑定到ViewModel的方法

快捷实现实体类到ViewModel的转换方法

你的Products实体类和ProductsViewModel属性完全匹配,有以下几种无需逐个赋值的快捷实现方式:

1. LINQ查询时直接投影(性能最优推荐)

不用先查询出List<Products>再转换,直接在EF查询阶段就投影成ProductsViewModel,EF会自动生成仅包含所需字段的SQL(避免不必要的实体实例化):

List<ProductsViewModel> productViewModels = _context.Products
    .Where(x => x.IsActive == true)
    .Select(x => new ProductsViewModel
    {
        ProductId = x.ProductId,
        ProductName = x.ProductName,
        IsActive = x.IsActive
    })
    .ToList();

如果属性名、类型完全一致,还可以简化对象初始化(EF Core 3.0+支持这种隐式投影):

List<ProductsViewModel> productViewModels = _context.Products
    .Where(x => x.IsActive == true)
    .Select(x => new ProductsViewModel())
    .ToList();

2. 使用对象映射库(如AutoMapper)

适合有大量类似转换场景的情况,通过配置实现一键批量转换:

步骤1:安装NuGet包

Install-Package AutoMapper
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

步骤2:配置映射规则

在项目的配置类(如Program.cs/Startup.cs)中注册AutoMapper并添加映射:

// .NET 6+ Program.cs示例
builder.Services.AddAutoMapper(typeof(Program));

// 创建映射配置文件
public class MappingProfile : Profile
{
    public MappingProfile()
    {
        // 属性完全匹配时,无需额外配置
        CreateMap<Products, ProductsViewModel>();
    }
}

步骤3:执行转换

在需要转换的类中注入IMapper,然后批量转换已有数据:

private readonly IMapper _mapper;

// 构造函数注入
public YourService(IMapper mapper)
{
    _mapper = mapper;
}

// 转换已获取的productData
List<ProductsViewModel> productViewModels = _mapper.Map<List<ProductsViewModel>>(productData);

3. 手动扩展方法(无第三方依赖)

不想引入外部库的话,可以写静态扩展方法实现转换:

public static class ProductsExtensions
{
    public static ProductsViewModel ToViewModel(this Products product)
    {
        return new ProductsViewModel
        {
            ProductId = product.ProductId,
            ProductName = product.ProductName,
            IsActive = product.IsActive
        };
    }
}

使用时直接调用扩展方法:

List<ProductsViewModel> productViewModels = productData.Select(p => p.ToViewModel()).ToList();

内容的提问来源于stack exchange,提问作者Soft_API_Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:55:14