Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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# AutoMapper';s AssertConfiguration验证仅在第一次加载时失败?_C#_Asp.net Mvc 3_Automapper - Fatal编程技术网

C# AutoMapper';s AssertConfiguration验证仅在第一次加载时失败?

C# AutoMapper';s AssertConfiguration验证仅在第一次加载时失败?,c#,asp.net-mvc-3,automapper,C#,Asp.net Mvc 3,Automapper,在X/WebSiteMVC3/Core/dependencysolution/XProfile.cs中,我有一个现有的映射,看起来有点像这样: CreateMap<DomainObjects.Entities.Thing1, Models.Thing1>(); CreateMap<Models.Thing1, DomainObjects.Entities.Thing1>() .ForMember(a => a.Thing2, opt => opt

在X/WebSiteMVC3/Core/dependencysolution/XProfile.cs中,我有一个现有的映射,看起来有点像这样:

 CreateMap<DomainObjects.Entities.Thing1, Models.Thing1>();
 CreateMap<Models.Thing1, DomainObjects.Entities.Thing1>()
     .ForMember(a => a.Thing2, opt => opt.Ignore())
     .ForMember(a => a.ModifiedBy, opt => opt.Ignore())
     .ForMember(a => a.ModifiedDate, opt => opt.Ignore())
     .ForMember(a => a.CreatedBy, opt => opt.Ignore())
     .ForMember(a => a.CreatedDate, opt => opt.Ignore());
CreateMap();
CreateMap()
.ForMember(a=>a.Thing2,opt=>opt.Ignore())
.ForMember(a=>a.ModifiedBy,opt=>opt.Ignore())
.FormMember(a=>a.ModifiedDate,opt=>opt.Ignore())
.ForMember(a=>a.CreatedBy,opt=>opt.Ignore())
.ForMember(a=>a.CreatedDate,opt=>opt.Ignore());
我需要为它的子对象添加一个映射,所以我添加了以下内容:

 CreateMap<DomainObjects.Entities.Thing2, Models.Thing2>();
 CreateMap<Models.Thing2, DomainObjects.Entities.Thing2>()
     .ForMember(a => a.ModifiedBy, opt => opt.Ignore())
     .ForMember(a => a.ModifiedDate, opt => opt.Ignore())
     .ForMember(a => a.CreatedBy, opt => opt.Ignore())
     .ForMember(a => a.CreatedDate, opt => opt.Ignore());
CreateMap();
CreateMap()
.ForMember(a=>a.ModifiedBy,opt=>opt.Ignore())
.FormMember(a=>a.ModifiedDate,opt=>opt.Ignore())
.ForMember(a=>a.CreatedBy,opt=>opt.Ignore())
.ForMember(a=>a.CreatedDate,opt=>opt.Ignore());
它是有效的,除了在第一页加载时,我得到:

找到了未映射的成员。查看下面的类型和成员。 添加自定义映射表达式、忽略、添加自定义解析程序或修改源/目标类型

Thing2->Thing2(目的地成员列表)

X.X.WebItemVC3.Models.Thing2->X.X.DomainObjects.Entities.Thing2(目标成员列表)

事情1

堆栈跟踪:

AutoMapper.ConfigurationStore.AssertConfiguration有效ID(IEnumerable`1类型映射)+684 AutoMapper.ConfigurationStore.AssertConfiguration有效ID()+12 AutoMapper.Mapper.AssertConfiguration有效ID()+23 C:\Source\X.X.WebItemVC3\Core\DependencyResolution\AutomapperRegistry.Configure()中的X.X.WebItemVC3.Core.DependencyResolution.AutomapperRegistry.Configure() C:\Source\X.X.WebSiteMVC3\Global.asax.cs:96中的X.X.WebSiteMVC3.mvcapapplication.Application_Start()

但在以后的每一次加载中,它都能按预期工作

所以。。。当Thing2的实现与Thing1(它一直都在工作)的实现相匹配时,为什么Thing2会失败?为什么在Thing2的错误中提到Thing1(我感觉这就是原因,但如果我能在这个空闲的周四上午10点看到它,那就糟了)


祝你好运

最后,这是由第2项内容与第1项内容的交叉引用引起的。。。所以我不得不这么做

 CreateMap<DomainObjects.Entities.Thing2, Models.Thing2>();
 CreateMap<Models.Thing2, DomainObjects.Entities.Thing2>()
 !-> .ForMember(a => a.Thing1, opt => opt.Ignore())
     .ForMember(a => a.ModifiedBy, opt => opt.Ignore())
     .ForMember(a => a.ModifiedDate, opt => opt.Ignore())
     .ForMember(a => a.CreatedBy, opt => opt.Ignore())
     .ForMember(a => a.CreatedDate, opt => opt.Ignore());
CreateMap();
CreateMap()
!-> .FormMember(a=>a.Thing1,opt=>opt.Ignore())
.ForMember(a=>a.ModifiedBy,opt=>opt.Ignore())
.FormMember(a=>a.ModifiedDate,opt=>opt.Ignore())
.ForMember(a=>a.CreatedBy,opt=>opt.Ignore())
.ForMember(a=>a.CreatedDate,opt=>opt.Ignore());
真正让我感到奇怪的是,我收到的错误消息(“未映射的成员被找到…”)没有出现在谷歌上!?通常情况下,当这种情况发生时,我会设法做一些非常奇怪/奇怪的事情,因此我很快就会在这里问一个问题。在这种情况下,问题有些微不足道


所以。。。对于其他可能通过谷歌来到这里的人来说:这可能与你的模型本身有关,而不是与AutoMapper有关。虽然我仍然不知道为什么映射在第二次传递时“起作用”!?真奇怪

最后,这是由第2项内容与第1项内容的交叉引用引起的。。。所以我不得不这么做

 CreateMap<DomainObjects.Entities.Thing2, Models.Thing2>();
 CreateMap<Models.Thing2, DomainObjects.Entities.Thing2>()
 !-> .ForMember(a => a.Thing1, opt => opt.Ignore())
     .ForMember(a => a.ModifiedBy, opt => opt.Ignore())
     .ForMember(a => a.ModifiedDate, opt => opt.Ignore())
     .ForMember(a => a.CreatedBy, opt => opt.Ignore())
     .ForMember(a => a.CreatedDate, opt => opt.Ignore());
CreateMap();
CreateMap()
!-> .FormMember(a=>a.Thing1,opt=>opt.Ignore())
.ForMember(a=>a.ModifiedBy,opt=>opt.Ignore())
.FormMember(a=>a.ModifiedDate,opt=>opt.Ignore())
.ForMember(a=>a.CreatedBy,opt=>opt.Ignore())
.ForMember(a=>a.CreatedDate,opt=>opt.Ignore());
真正让我感到奇怪的是,我收到的错误消息(“未映射的成员被找到…”)没有出现在谷歌上!?通常情况下,当这种情况发生时,我会设法做一些非常奇怪/奇怪的事情,因此我很快就会在这里问一个问题。在这种情况下,问题有些微不足道


所以。。。对于其他可能通过谷歌来到这里的人来说:这可能与你的模型本身有关,而不是与AutoMapper有关。虽然我仍然不知道为什么映射在第二次传递时“起作用”!?真奇怪

如何调用自动映射配置?从global.asax.cs中的应用程序_开始?是,正在从global.asax.cs中的应用程序_开始调用“Core.DependencyResolution.AutomapperRegistry.Configure();”。我在这个问题上有些不知所措,因为这是我的第一个有分量的MVC应用程序,而且编写它的开发人员正在度假,所以我是一个stringer(由于我的无知,我不想在代码库中做太多更改)。你怎么称呼你的automapper配置?从global.asax.cs中的应用程序_开始?是,正在从global.asax.cs中的应用程序_开始调用“Core.DependencyResolution.AutomapperRegistry.Configure();”。我在这个问题上有些不知所措,因为这是我的第一个有分量的MVC应用程序,而且编写它的开发人员正在休假,所以我是一个stringer(由于我的无知,我不想在代码库中做太多更改)。我也犯了同样的错误。。我相信这是我的新爱好。。至少这是一个开始。。谢谢我也犯了同样的错误。。我相信这是我的新爱好。。至少这是一个开始。。谢谢