Я действительно вытягиваю свои волосы с помощью Automapper. Я считаю его неинтуитивным и очень сложным в использовании. Было бы намного проще написать код отображения вручную. У меня есть два простых типов:Невозможно сопоставить бизнес-объект с объектом данных
namespace BusinessObjects
{
public class Application
{
public int ID { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public System.DateTime DateOfBirth { get; set; }
public System.DateTime CreatedTime { get; set; }
public System.DateTime ModifiedTime { get; set; }
public System.DateTime ApplicationDate { get; set; }
public string Qualified { get; set; }
public int salary { get; set; }
public string userID { get; set; }
}
}
namespace DataObjects
{
using System;
using System.Collections.Generic;
public partial class Application
{
public int ID { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public System.DateTime DateOfBirth { get; set; }
public System.DateTime CreatedTime { get; set; }
public System.DateTime ModifiedTime { get; set; }
public System.DateTime ApplicationDate { get; set; }
public string Qualified { get; set; }
public int salary { get; set; }
public string userID { get; set; }
}
}
и контроллер:
public ApplicationController()
{
Mapper.Initialize(cfg => cfg.CreateMap<BusinessObjects.Application, ApplicationModel>());
config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<BusinessObjects.Application, ApplicationModel>();
});
config.AssertConfigurationIsValid();
Mapper.Initialize(cfg => cfg.CreateMap<ApplicationModel,BusinessObjects.Application>());
config2 = new MapperConfiguration(cfg =>
{
cfg.CreateMap<ApplicationModel,BusinessObjects.Application>();
});
config2.AssertConfigurationIsValid();
}
public int Create(BusinessObjects.Application businessApplication)
{
var mapper =config2.CreateMapper();
DataObjects.Application dataApplication = AutoMapper.Mapper.Map<DataObjects.Application>(businessApplication);
int count = 0;
using (CreditCardPreQualificationEntities CreditCardPreQualificationDatabase = new CreditCardPreQualificationEntities())
{
CreditCardPreQualificationDatabase.Applications.Add(dataApplication);
count = CreditCardPreQualificationDatabase.SaveChanges();
}
return count;
}
Я провел почти все выходные пытается получить это не работать, и я не ближе. Я не вижу преимущества Automapper вообще. Ошибка, которую я получаю: «Исключение типа« AutoMapper.AutoMapperMappingException »произошло в AutoMapper.dll, но не было обработано в коде пользователя
Дополнительная информация: Отсутствует тип конфигурации карты или неподдерживаемое отображение.« Пожалуйста, помогите.
... Также ваш код инициализации очень запутан: вам нужно только настроить AutoMapper один раз в начале вашего приложения, и вам нужно только создать карту каждого типа один раз. – stuartd
@stuartd, где вы помещаете код инициализации? Я ввел его дважды, то есть один раз из бизнес-объекта в объект данных и один раз из объекта данных в бизнес-объект. Это неправильно? – w0051977
В приложении MVC в приложении Application_Start(). Вы должны только инициализировать AutoMapper один раз, и ** использовать либо старый синтаксис, либо новый, а не оба **. Старый способ был бы таким простым, как «Mapper.Initialize» (cfg => { cfg.CreateMap(); cfg.CreateMap (); }); ', а затем' Mapper.Map (businessApplication); ' –
stuartd