Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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映射未知类型_C#_.net_Entity Framework_Automapper - Fatal编程技术网

C# 使用AutoMapper映射未知类型

C# 使用AutoMapper映射未知类型,c#,.net,entity-framework,automapper,C#,.net,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 Fra

我正在使用
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();
问题是
Mapper.Map()
抛出了一个
automappingexception

Missing type map configuration or unsupported mapping.

Mapping types:
Object -> MachineDataModel
System.Object -> MyProject.DataModels.MachineDataModel

Destination path:
MachineDataModel

Source value:
MyProject.DataModels.MachineDataModel

我真的不明白问题是什么,我能做些什么来解决它?

您需要使用非通用重载的
Map

Mapper.Map(item, itemInDatabase, item.GetType(), itemInDatabase.GetType());

原因是您当前使用的通用版本没有使用您传递的实例的运行时类型。相反,它使用编译时类型,
item
的编译时类型是
object
,因为这是
Activator.CreateInstance
的返回值,哈哈,我本来想告诉你切换参数的顺序,但是你太快了。但它就像一个符咒!我会尽快接受你的回答。@Joel:是的,我先写下了相关部分,然后查了正确的顺序:)