Joe*_*oel 10 .net c# entity-framework automapper
我正在使用AutoMapper
将一个对象的属性复制到另一个对象:这是我的代码:
// Get type and create first object
Type itemType = Type.GetType(itemTypeName);
var item = Activator.CreateInstance(itemType);
// Set item properties
.. Code removed for clarity ..
// Get item from Entity Framework DbContext
var set = dataContext.Set(itemType);
var itemInDatabase = set.Find(id);
if (itemInDatabase == null)
{
itemInDatabase = Activator.CreateInstance(itemType);
set.Add(itemInDatabase);
}
// Copy item to itemInDatabase
Mapper.CreateMap(itemType, itemType);
Mapper.Map(item, itemInDatabase);
// Save changes
dataContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
问题是Mapper.Map()
抛出一个AutoMapperMappingException
:
Missing type map configuration or unsupported mapping.
Mapping types:
Object -> MachineDataModel
System.Object -> MyProject.DataModels.MachineDataModel
Destination path:
MachineDataModel
Source value:
MyProject.DataModels.MachineDataModel
Run Code Online (Sandbox Code Playgroud)
我真的不明白问题是什么,我该怎么做才能解决它?
Dan*_*rth 14
您需要使用非泛型重载Map
:
Mapper.Map(item, itemInDatabase, item.GetType(), itemInDatabase.GetType());
Run Code Online (Sandbox Code Playgroud)
原因是您当前使用的通用版本不使用您传递的实例的运行时类型.相反,它使用编译时类型 - 而编译时类型item
是object
因为它是返回值Activator.CreateInstance
.