Как связать уже существующую уникальную строку в БД с переданной в контроллер сущностью?
Использую следующие версии: 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, для двух разных записей. Чтобы получалось что-то такое:
Благодарю за ответы!
