Добавление данных в Связанный объект во взаимосвязи «Многие ко многим» в ядре EF 2.2, в то время как 1 «Основные данные» выбираются из dropdrown - PullRequest
0 голосов
/ 26 апреля 2020

Мои требования:

У меня есть 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, чтобы увидеть конфликтующие значения ключей. Теперь, прочитав другие посты, я предполагаю, что это неправильный подход. Пожалуйста, наставьте меня.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...