2013-04-11 90 views
1

我使用AutoMapper將Domain對象映射到我的控制器中的ViewModel對象。一切工作正常,直到我嘗試添加雙?屬性。我已經開始收到以下錯誤:Automapper失敗了嗎?屬性

Missing type map configuration or unsupported mapping. 

Mapping types: 
Address -> AddressModel 
Domain.Address -> Web.Models.AddressModel 

Destination path: 
AccountAddressModel.Address.Address 

Source value: 
Domain.Address 

我的地址階級和階級AddressModel都具有兩個屬性稱爲經度和緯度。這些屬性(在這兩個類中)被定義爲double ?.如果我註釋掉這些屬性,一切正常。如果我將所有這些屬性加倍,那麼一切正常。它只有兩倍?導致問題。

我正在使用AutoMapper 2.2.1通過NuGet下載。

我讀過其他帖子,這個問題與空值應該是固定的。這使我相信我可能會做一些不同的東西,所以我要發佈我的代碼,看看是否有人能看到的東西,可能是一個問題:

域模型

public class AccountAddress 
{ 
    public int Id { get; set; } 
    public int AccountId { get; set; } 
    public int AddressId { get; set; } 
    public Address Address { get; set; } 
    ... 
} 

public class Address : IUserTrackingEntity 
{ 
    public int Id { get; set; } 
    public string Addressee { get; set; } 
    public string Street1 { get; set; } 
    public string Street2 { get; set; } 
    ... 
    public double? Longitude { get; set; } 
    public double? Latitutde { get; set; } 
} 

VIEW模型

public class AccountAddressEditModel 
{ 
    public string AccountName { get; set; } 
    public AccountAddressModel Address { get; set; } 
    public IList<Country> CountriesList { get; set; } 
    ... 
} 

public class AccountAddressModel 
{ 
    public AccountAddressModel() 
    { 
     Address = new AddressModel(); 
    } 
    public int AccountId { get; set; } 
    public int AddressId { get; set; } 
    public int Id { get; set; } 
    public AddressModel Address { get; set; } 
} 

public class AddressModel 
{ 
    public int Id { get; set; } 
    public string Addressee { get; set; } 
    [Required(ErrorMessage="A street address is required.")] 
    public string Street1 { get; set; } 
    public string Street2 { get; set; } 
    ... 
    public double? Longitude { get; set; } 
    public double? Latitude { get; set; } 
} 

映射代碼在我的控制器

//Get an AccountAddress 
address = _context.AccountAddresses.SingleOrDefault(ad => ad.Id == 12345); 

model = new AccountAddressEditModel(); 

Mapper.CreateMap<AccountAddress, AccountAddressModel>(); 
Mapper.CreateMap<AccountAddress, AddressModel>(); 

Mapper.Map(address, model.AccountAddress); 

有沒有其他人經歷過這個或找到了解決方案?

回答

1

Mapper.CreateMap<AccountAddress, AddressModel>(); 

應該因爲你映射Address類的AddressModel類改爲

Mapper.CreateMap<Address, AddressModel>(); 

此。

+0

這樣做。多謝!奇怪的是,直到我添加了這些雙重效果之前,它正在以其他方式工作屬性。 – RHarris 2013-04-11 13:36:31