1

AutoMapper を使用して、Domain オブジェクトをコントローラーの ViewModel オブジェクトにマップしています。ダブルを追加しようとするまで、すべてが正常に機能していましたか? プロパティ。次のエラーが発生し始めました。

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

私の Address クラスと AddressModel クラスには、Longitude と Latitude という 2 つのプロパティがあります。これらのプロパティ (両方のクラス) は double? として定義されます。これらのプロパティをコメントアウトすると、すべて正常に機能します。これらのプロパティをすべて単純に 2 倍にすると、すべてが正常に機能します。ダブルだけですか?それが問題を引き起こします。

NuGet経由でダウンロードしたAutoMapper 2.2.1を使用しています。

nullables に関するこの問題は修正されるはずだったという他の投稿を読みました。これにより、何か違うことをしている可能性があると思われるので、コードを投稿して、問題の可能性があるものを誰かが見ることができるかどうかを確認します。

ドメインモデル

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

モデルを見る

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

他の誰かがこれを経験したか、これに対する解決策を見つけましたか?

4

1 に答える 1