如何在ASP.Net Core 6中设置AutoMapper

25

如何在ASP.Net Core 6中配置AutoMapper

我有一个使用.Net 3.1编写的项目,因此我们拥有Startup.cs类。

现在我正在将它迁移到.net core 6

现在当我将以下配置放入我的.Net 6 Program.cs时:

             builder.Services.AddAutoMapper(typeof(Startup));

我遇到了一个错误,提示无法找到类型或命名空间为Startup的内容。

有什么建议吗?如何在.NET 6中修复它或配置它?


4
typeof(Program).Assembly 的意思是获取 Program 类型所在程序集的信息。 - Tiny Wang
你的评论是正确的,你可以将其发布为答案,这样我就可以接受它。 - MJ X
6个回答

43

安装包

  • dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection

Program.cs

builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

创建 MappingProfiles.cs

namespace XXX.XXX.Helpers;

public class MappingProfiles: Profile {
    public MappingProfiles() {
        CreateMap<Address, AddressDto>();
    }
}

25

使用以下代码替代:typeof(Program).Assembly


9
你可以去掉.Assembly部分,它会起同样的作用。 这里提供了参考。 - Daniel Liuzzi

18

对于像我一样不知道的人。

  1. 通过NuGet或通过dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection安装DI的AutoMapper扩展。
  2. 然后在Program.cs文件中使用以下代码注册服务:builder.Services.AddAutoMapper(typeof(<name-of-profile>)); (在.NET 6中,我们不再有StartUp.cs)

我使用Profiles来进行我的映射配置。这是Automapper关于profiles的链接


1
使用这行代码进行修复:

builder.Services.AddAutoMapper(typeof(Program));


这不就是与之前的答案提供的建议基本相同吗?你是以不同的持久类(Program而不是Startup)为根,但基本概念是相同的。 - Jeremy Caney

0
尝试在你的 Program.cs 中添加这行代码。

services.AddAutoMapper(Assembly.GetExecutingAssembly());


1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

-2

安装AutoMapper包(根据项目需求的版本)

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

然后在 Startup.cs 中的 ConfigureServices 中注册一个服务。

using AutoMapper;
public void ConfigureServices(IServiceCollection services){
    services.AddAutoMapper(typeof(Startup));
}

2
Core 6.0没有Startup.cs类。 - Adam G.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接