#c# #asp.net-core #automapper
#c# #asp.net-core #automapper
Вопрос:
На одном ASP.NET ОСНОВНАЯ реализация API, допустим, у меня есть простая бизнес-модель, подобная этой:
public class MyClass
{
public MyClass()
{
}
public int UserId { get; set; }
public int[] UserValues { get; set; }
}
И я получаю объект JSON, подобный этому:
{
"userId": 1,
"userValues": [4, 5, 6]
}
Моя цель здесь — сохранить в базе данных строку для каждого userValues
для этого конкретного пользователя, вот так:
UserId | UserDbValues
------- -------------
1 | 4
1 | 5
1 | 6
------- -------------
Можно ли было бы добиться этого с помощью AutoMapper? Или мне нужно вручную выполнить цикл и сохранить каждую строку?
Я только начинаю знакомиться с AutoMapper, так что это может быть что-то действительно тривиальное или даже вообще невозможное. Я попытался отобразить это таким образом, но это не сработало:
CreateMap<MyClass, MyDtoClass>()
.ForMember(dest => dest.userDbValues, opt => opt.MapFrom(src => src.userValues));
Большое спасибо за любой совет, который у вас может быть!
Комментарии:
1. Вероятно, это проще сделать и понять, не привлекая AutoMapper для расширения. Это звучит как задание для десериализатора JSON. Вы могли бы сделать пользовательский конвертер типов AutoMapper для
int
вашегоUser
типа. И вы все равно можете в конечном итоге выполнить цикл для сохранения записей.2. Поделитесь с нами кодом, который вы сохранили
MyClass
в базе данных. Это не связано с AutoMapper, который преобразует толькоMyDtoClass
вMyClass
. Ключевым моментом является то, как вы будете вставлятьmyClass
. в общем, вам нужно выполнить цикл,UserValues
чтобы вставитьUserValue
таблицу.