Automapper не устанавливает значения свойств навигации из хранимой процедуры
Мой Customer.Model
имеет свойство навигации:
public Address Address { get; set; }
У меня есть хранимая процедура, которая имеет выбор, который выглядит следующим образом:
SELECT
c.*,
a.City AS AddressCity,
a.State AS AddressState
Эти значения оказываются в сложном объекте, который автоматически генерирует EF6:
Customer_GetCustomers_Result
В моем конфиге AutoMapper у меня есть:
CreateMap<Customer_GetCustomers_Result, Model.Customer>();
В моем репозитории у меня есть:
public IEnumerable<Model.Customer> GetCustomers()
{
var cList = context.Customer_GetCustomers();
return Mapper.Map<List<Model.Customer>>(cList);
}
cList
заканчивается быть типом Customer_GetCustomers_Result
поэтому AutoMapper преобразует его в Model.Customer
и возвращает, так что мое приложение может использовать его.
Мне сказали, что AutoMapper будет автоматически установлен Customer.Address.City
а также Customer.Address.State
если бы я следовал этому соглашению об именах. Что мне не хватает?
1 ответ
Вы ссылаетесь на то, что называется сплющиванием. Но все наоборот. AutoMapper может отображать Customer.Address.City
в собственность Target.AddressCity
, но не наоборот. Это должно было бы создать Address
объект и только установить его City
свойство, а затем имейте в виду, что для второго отображения то же самое Address
должен быть использован.
Слишком много сложностей и крайних случаев, чтобы ввязываться в инструмент, который должен выполнять простую работу.