Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射-在C中创建映射#_C#_Asp.net_Asp.net Web Api_Automapper - Fatal编程技术网

C# 自动映射-在C中创建映射#

C# 自动映射-在C中创建映射#,c#,asp.net,asp.net-web-api,automapper,C#,Asp.net,Asp.net Web Api,Automapper,我刚刚开始使用AutoMapper,想弄清楚一些事情 假设我想在用户和UserDto之间无缝映射 这些示例似乎都建议我必须先到一个启动区域(例如WebApiConfig.cs或startup.cs或global.axax等)执行以下操作: Mapper.CreateMap<User, UserDto>(); Mapper.CreateMap(); 假设我有50或100个需要映射的实体/DTO,我需要添加50或100行代码,并在一个类到另一个类之间进行映射?肯定有更聪明的方法,对吗

我刚刚开始使用AutoMapper,想弄清楚一些事情

假设我想在用户和UserDto之间无缝映射

这些示例似乎都建议我必须先到一个启动区域(例如WebApiConfig.cs或startup.cs或global.axax等)执行以下操作:

Mapper.CreateMap<User, UserDto>();
Mapper.CreateMap();
假设我有50或100个需要映射的实体/DTO,我需要添加50或100行代码,并在一个类到另一个类之间进行映射?肯定有更聪明的方法,对吗

如果我不需要做任何特定的映射/覆盖,我真的需要这样做吗?我一定是误解了框架的基本原理,因为我觉得这是错误的


谢谢

只要所有内容都与源和目标匹配,就可以使用
DynamicMap

var target = Mapper.DynamicMap<TSource, TTarget>(source);
var target=Mapper.DynamicMap(源代码);
但是,根据需要创建映射会更有效:

if (Mapper.FindTypeMapFor<TSource, TTarget>() == null)
{
    Mapper.CreateMap<TSource, TTarget>();
}

var target =  Mapper.Map<TSource, TTarget>(source);
if(Mapper.FindTypeMapFor()==null)
{
CreateMap();
}
var target=Mapper.Map(源);

只要所有内容都与源和目标匹配,您就可以使用
DynamicMap

var target = Mapper.DynamicMap<TSource, TTarget>(source);
var target=Mapper.DynamicMap(源代码);
但是,根据需要创建映射会更有效:

if (Mapper.FindTypeMapFor<TSource, TTarget>() == null)
{
    Mapper.CreateMap<TSource, TTarget>();
}

var target =  Mapper.Map<TSource, TTarget>(source);
if(Mapper.FindTypeMapFor()==null)
{
CreateMap();
}
var target=Mapper.Map(源);

肯定有更聪明的方法,对吧?
。不是真的。除非你想通过反射来实现。但是如果将来你想要一个特定映射的特定规则,你就有问题了。哇,好的,谢谢。我觉得在我的控制器中手动写出映射(当我想在两件事之间映射时)的事实足以让映射者理解这两种类型,但我想不是。好的,谢谢(通过阅读文档)您是否了解可以在一个类中创建所需的所有映射(比如EntityToViewModel)并在global.asax中注册该类?在控制器中创建它们可能会生成一些重复的代码,我想这就是您所关心的问题?使用动态映射时,您会错过一件非常重要的事情,那就是配置验证。如果您输入了一些内容,或者重命名了一些内容,您将不会遇到任何运行时故障。您将只拥有一个没有值的未映射属性。不要在这里走捷径。
肯定有更聪明的方法,对吗?
。不是真的。除非你想通过反射来实现。但是如果将来你想要一个特定映射的特定规则,你就有问题了。哇,好的,谢谢。我觉得在我的控制器中手动写出映射(当我想在两件事之间映射时)的事实足以让映射者理解这两种类型,但我想不是。好的,谢谢(通过阅读文档)您是否了解可以在一个类中创建所需的所有映射(比如EntityToViewModel)并在global.asax中注册该类?在控制器中创建它们可能会生成一些重复的代码,我想这就是您所关心的问题?使用动态映射时,您会错过一件非常重要的事情,那就是配置验证。如果您输入了一些内容,或者重命名了一些内容,您将不会遇到任何运行时故障。您将只拥有一个没有值的未映射属性。不要走捷径。