我想用我的AutoMapper域实体ICustomer映射CustomerDTO。一切为了第一继承级别,但不是为别人工作正常。

我使用我的域模型的接口,因为混凝土类型由StructureMap从我LinqToSql数据库基础层注入。

public interface IBaseEntity<TPk>
{
    TPk Id { get; }
}

public interface ICustomer : IBaseEntity<int>
{
    string Email { get; set; }
}

[DataContract]
public class CustomerDTO
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Email { get; set; }
}

现在的AutoMapper映射

Mapper.CreateMap<CustomerDTO, ICustomer>();

Mapper.CreateMap<ICustomer, CustomerDTO>();

Mapper.AssertConfigurationIsValid();

现在,其中我使用的映射

    public CreateCustomerServiceResult CreateCustomer(CustomerDTO customer)
    {
        var result = new CreateCustomerServiceResult();
        try
        {
            var originalMapped = Mapper.DynamicMap<CustomerDTO, ICustomer>(customer);

            var newCustomer = _customerService.CreateCustomer(originalMapped);

            var newMapped = Mapper.DynamicMap<ICustomer, CustomerDTO>(newCustomer);

            result.Customer = newMapped;
        }
        catch (Exception ex)
        {

        }
        return result;
    }

我有一个 Dictionnary丢失密钥异常在 “ID” 属性...

有帮助吗?

解决方案

有了!

在问题是由于IBaseEntity的“ID”属性的缺失设定器。

改变它的一切作品之后

public interface IBaseEntity<TPk>
{
    TPk Id { get; set; }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top