Как связать уже существующую уникальную строку в БД с переданной в контроллер сущностью?

Использую следующие версии: EF - 6.0.8 .NET - 6.0 ASP - 6.0.8

Как возможно при добавлении новой сущности добавить к ней уже существующее значение из бд? Имеются следующие сущности со связью many-to-many:

public class Person
{
[Required] public long Id { get; set; }

[Required] public string Name { get; set; } = null!;

public string? DisplayName { get; set; }

public ICollection<PersonSkill>? PersonSkills { get; set; }
}

public class Skill
{
[Required] public long Id { get; set; }

[Required] 
public string Name { get; set; }

public ICollection<PersonSkill>? PersonSkills { get; set; }
}

public class PersonSkill
{
[Required] public long PersonId { get; set; }
[Required,ForeignKey("PersonId")] public Person Person { get; set; }


[Required] public long SkillId { get; set; }

[Required,ForeignKey("SkillId")] public Skill? Skill{ get; set; }

[Required] public byte Level { get; set; }
}

Модель, в которой пользователь передает нам данные:

public class PersonModel
{
public string PersonName { get; set; }

public string? DisplayName { get; set; }

public List<SkillModel> SkillModels { get; set; }
}

public class SkillModel
{
public string SkillName { get; set; }
public byte Level { get; set; }
}

Такой метод репозитория для добавления:

 public void CreatePerson(PersonModel personModel)
{
    var person = new Person() { Name = personModel.PersonName, DisplayName = personModel.DisplayName };
    foreach (var skillModel in personModel.SkillModels)
    {
        var skill = new Skill { Name = skillModel.SkillName };
        var personSkill = new PersonSkill()
        {
            Person = person,
            Skill = skill,
            Level = skillModel.Level
        };
        _context.PersonSkills.Add(personSkill);
    }
    _context.SaveChanges();
}

Уникальное атрибут в таблице Skill - Name. Не до конца понимаю как можно использовать имеющееся свойство Name, для двух разных записей. Чтобы получалось что-то такое:

введите сюда описание изображения

Благодарю за ответы!


Ответы (0 шт):