سؤال

وأنا أحاول أن الخريطة CustomerDTO مع نطاقي ICustomer الكيان AutoMapper. كل شيء يعمل بشكل جيد لمستوى الميراث الأول ولكن ليس للآخرين.

وأنا باستخدام واجهات لنموذج نطاقي حيث يتم حقن أنواع محددة من قبل 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 المفقودين استثناء مفتاح في الممتلكات "إيد" ...

هل كانت مفيدة؟

المحلول

وانه حصل على!

وكانت المشكلة بسبب واضع في عداد المفقودين من "إيد" ممتلكات IBaseEntity.

وبعد تغييره يعمل كل شيء

public interface IBaseEntity<TPk>
{
    TPk Id { get; set; }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top