4

AutoMapper を使用して、CustomerDTO をドメイン エンティティ ICustomer にマップしようとしています。最初の継承レベルではすべてが正常に機能しますが、他の継承レベルでは機能しません。

具体的な型は、LinqToSql データベース インフラストラクチャ レイヤーから StructureMap によって注入されるため、ドメイン モデルにインターフェイスを使用しています。

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;
    }

「Id」プロパティで Dictionnary missing Key Exception があります...

4

1 に答える 1

1

とった!

この問題は、IBaseEntity の「Id」プロパティのセッターが欠落していることが原因でした。

それを変更した後、すべてが機能します

public interface IBaseEntity<TPk>
{
    TPk Id { get; set; }
}
于 2009-12-01T11:10:44.427 に答える