规格:.NET 4.5.1 - MVC 5.2.2 - EF 6.0 - AutoMapper 3.2.1
我首先遇到代理对象错误,但能够通过执行以下操作解决它:AutoMapper 3.1.1 和 Entity Framework 6.1 代理对象 https://stackoverflow.com/questions/22723133/automapper-3-1-1-and-entity-framework-6-1-proxy-objects
Once I fixed that error, I instantly got the following error message:
由于某种原因,它说从 Pages 到 PagesViewModel 的映射不存在,尽管它确实存在。这是我的代码:
In 全局.asax.cs:
protected void Application_Start()
{
ConfigureAutomapper.Configure();
....
In AutoMapper.cs(已更新)
public static class ConfigureAutomapper
{
public static void Configure()
{
ConfigurePublications();
ConfigureBlog();
ConfigureBasic();
ConfigureLists();
}
public static void ConfigurePublications()
{
Mapper.Initialize(x =>
{
x.AddProfile<PublicationsMappings>();
});
}
public static void ConfigureBlog()
{
Mapper.Initialize(x =>
{
x.AddProfile<BlogMappings>();
});
}
public static void ConfigureBasic()
{
Mapper.Initialize(x =>
{
x.AddProfile<BasicMappings>();
});
}
public static void ConfigureLists()
{
Mapper.Initialize(x =>
{
x.AddProfile<ListMappings>();
});
}
}
...
public class BasicMappings : Profile
{
public override string ProfileName
{
get
{
return "BasicMappings";
}
}
protected override void Configure()
{
Mapper.CreateMap<Pages, PagesViewModel>();
Mapper.CreateMap<PagesViewModel, Pages>();
...
我已经追踪了它,它进入那里并创建了地图。当它去使用转换时,它不起作用。
对于 model 和 viewModel,所有变量名称都是相同的。我只添加了数据注释和一些清理类set { pageDescription = value.StringSanitizer(); }
声明链接对象/表时会出现差异:
Model:
public virtual PageType PageTypes { get; set; }
public virtual SiteMap SiteMap { get; set; }
public virtual ICollection<Rows> Row { get; set; }
public virtual Track Tracks { get; set; }
而我的视图模型:
public PageTypeViewModel PageTypes { get; set; }
public SiteMapViewModel SiteMap { get; set; }
public ICollection<RowsViewModel> Row { get; set; }
public TrackViewModel Tracks { get; set; }
连接到这些模型的 viewModel。所有这些都映射在 AutoMapper.cs 中
UPDATE:我的项目中已经有一个单元测试:
[TestMethod]
public void AutoMapper_Basic_Configuration_IsValid()
{
//Arrange
//Act
ConfigureAutomapper.ConfigureBasic();
//Assert
Mapper.AssertConfigurationIsValid();
}
它通过了所有测试,没有映射错误。
谁能给我一些关于这个问题的见解?如果您需要更多信息,请告诉我。谢谢你!