我有一个带有默认构造函数的简单对象。我要映射到的对象和从它们映射的对象都完全相同,并且已经为它们配置了一个映射器。从数据库获取对象一切正常。
public class Tag
{
public Guid ProjectId { get; set; }
public Guid TagId { get; set; }
public string Name { get; set; }
}
如果我致电Mapper.Instance.Map(tagFrom, tagTo);
,一切正常,但是如果我致电dbContext.Tags.Persist().InsertOrUpdate(tag);
,则会出现此错误。
找到未映射的成员。在下面查看类型和成员。 添加自定义映射表达式,忽略,添加自定义解析器或修改源/目标类型 对于没有匹配的构造函数,请添加一个无参数ctor,添加可选参数,或映射所有构造函数参数
AutoMapper为您创建了此类型映射,但是无法使用当前配置来映射您的类型。
AutoMapper为您创建了此类型映射,但是无法使用当前配置来映射您的类型。 标签->表达式
1 (Destination member list) AKS.Common.Models.Tag -> System.Linq.Expressions.Expression
1 [[System.Func`2 [[AKS.AppCore.Entities.Tag,AKS.AppCore,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null],[System.Boolean ,System.Private.CoreLib,版本= 4.0.0.0,文化=中性,PublicKeyToken = 7cec85d7bea7798e]],System.Private.CoreLib,版本= 4.0.0.0,文化=中性,PublicKeyToken = 7cec85d7bea7798e]](目标成员列表)< / p>未映射的属性:
参数
没有可用的构造函数。
似乎是在说我没有默认构造函数,但显然有一个。有人知道我在做什么错吗?
软件包版本: AutoMapper 8.0.0 AutoMapper.Collections 5.0.0 AutoMapper.Collections.EntityFrameworkCore 0.2.0
答案 0 :(得分:0)
这可能是AutoMapper.Collections.EntityFrameworkCore中的错误,或者可能是由于我自己的滥用引起的。
我正在使用以下代码配置Mapper
var cfg = new MapperConfigurationExpression();
cfg.AddCollectionMappers();
cfg.UseEntityFrameworkCoreModel<MyDbContext>();
cfg.CreateMap<TagDto, TagEntity>().ReverseMap();
然后我试图在初始化映射器之前用此代码验证映射配置。
var config = new MapperConfiguration(cfg);
config.AssertConfigurationIsValid();
Mapper.Initialize(cfg);
如果删除创建MapperConfiguration
的行并将其用于AssertConfigurationIsValid()
,则调用InsertOrUpdate()
的工作。
我还发现,如果我首先初始化映射器,则可以调用AssertConfigurationIsValid()
,然后在Mapper.Instance
上调用该方法
Mapper.Initialize(cfg);
Mapper.Configuration.AssertConfigurationIsValid();