Мои требования:
У меня есть 3 таблицы в моей БД 1. Единицы 2. Навыки 3. UnitSkill
Теперь у меня есть 2 экрана пользовательского интерфейса, откуда мы добавляем значение в БД. Во-первых, это Пользовательский интерфейс навыков, здесь не создаются единицы. Навыки создаются как Основной список в БД, который будет использоваться в выпадающем меню Multiselect для выбора Навыков, которые будут связаны с Юнитом. наоборот также может произойти.
То, что я следую: имеет dataModel из всех трех этити. и создали репозиторий только из 2 сущностей (единиц и навыков), так как другой является сущностью отношения.
{
"name": "Sanskrit Varnamal grade 1",
"durationInDays": 10,
"courseId": "b0ffcb3c-d050-4d53-8da8-12c8039f93c3",
"unitSkills": [
{
"id": "bdf5456e-3de4-4269-a09c-4feb5362268c",
},
{
"id": "c99cf918-2a47-4146-8461-7ba5c2efda83",
}]
Теперь метод действия API-
public async Task<IActionResult> Post([FromBody] CreateUnitVM Model)
{
var DataModel = _mapper.Map<Unit>(Model);
DataModel.CreatedAt = DateTime.Now;
DataModel.UpdatedAt = DateTime.Now;
foreach (var item in Model.UnitSkills)
{
DataModel.UnitSkills.Add(new UnitSkill
{
SkillId = item.Id
});
}
//DataModel.CreatedBy=
var result = await _UnitRepository.CreateAsync(DataModel);
return Ok(result);
}
Но выше ошибка выброса кода. Экземпляр типа объекта «UnitSkill» не может быть отслежен, поскольку другой экземпляр с тем же значением ключа для {'SkillId', 'UnitId'} уже отслеживается. При подключении существующих объектов убедитесь, что подключен только один экземпляр объекта с данным значением ключа. Подумайте об использовании DbContextOptionsBuilder.EnableSensitiveDataLogging, чтобы увидеть конфликтующие значения ключей. Теперь, прочитав другие посты, я предполагаю, что это неправильный подход. Пожалуйста, наставьте меня.
Спасибо