Я хочу создать API, который может принимать любое количество дочерних идентификаторов.
и зациклить его в базе данных, добавив 1 строку для каждого дочернего идентификатора.
Я попытался сделать CategoryChildId списком или массивом, но он говорит, что платформа Entity не принимает примитивные типы.
Как мне этого добиться?
например, когда я получаю JSON, как это:
"CategoryParentID": "4",
"CategoryChildID": [
{
5,6,7
}
],
Он будет хранить его в базе данных следующим образом.
У меня есть только код для добавления одного ребенка за раз.
Сервис для контроллера:
public async Task<ServiceResultWithoutBaseEntity<CategoryRollup>> Add(CategoryRollupViewModel newItem)
{
var result = new ServiceResultWithoutBaseEntity<CategoryRollup>();
result.Errors.AddRange(Validate(newItem));
if (result.HasErrors)
return result;
var item = newItem.MapToEntity(new CategoryRollup());
_context.CategoryRollups.Add(item);
await _context.SaveChangesAsync();
result.EntityResult = item;
return result;
}
модель:
public class CategoryRollup
{
[Key]
public int ID { get; set; }
public int CategoryChildID { get; set; }
public int CategoryParentID { get; set; }
}
смотреть модель:
public class CategoryRollupViewModel
{
[Key]
public int ID { get; set; }
public int CategoryChildID { get; set; }
public int CategoryParentID { get; set; }
}
помощник:
public static class CategoryRollupHelper
{
public static CategoryRollupViewModel MapFromEntity(this CategoryRollup source)
{
if (source == null)
return null;
var result = new CategoryRollupViewModel
{
CategoryChildID = source.CategoryChildID,
CategoryParentID = source.CategoryParentID,
};
return result;
}
public static CategoryRollup MapToEntity(this CategoryRollupViewModel source, CategoryRollup entity)
{
if (source == null || entity == null)
return null;
entity.CategoryChildID = source.CategoryChildID;
entity.CategoryParentID = source.CategoryParentID;
return entity;
}
}