Ошибка при добавлении в БД IDENTITY_INSERT is set to OFF

В общем это простенькое приложение вроде учёта всех сотрудников в компании. Я добавляю сотрудника и вылетает такая ошибка SqlException: Cannot insert explicit value for identity column in table 'Skills' when IDENTITY_INSERT is set to OFF. дело в том что Skills у меня это List у skill есть имя и id и у Employee есть id, возможно они конфликтуют. Я хотел переименовать Id в что-то другое, но SkillId почему-то не работает, а какой атрибут написать я не помню, чтобы можно было за id принять свойство с любым названием. В общем вот код:

public class Skill
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Skill() { }
}
public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string SecondName { get; set; }
    public DateTime BirthDate { get; set; }
    public decimal Salary { get; set; }
    public bool Bonus { get; set; }
    public List<Skill> Skills { get; set; }

    public Employee(string name, string secondName, DateTime birth, decimal salary, bool bonus, List<Skill> skills)
    {
        Name = name;
        SecondName = secondName;
        BirthDate = birth;
        Salary = salary;
        Bonus = bonus;
        Skills = skills;
    }
    public Employee() { }
}

    private void btnHireEmp_Click(object sender, EventArgs e)
    {
        var form = new HireEmploee();
        if (form.ShowDialog() == DialogResult.OK)
        {
            db.Employees.Add(form.Employee);
            db.SaveChanges();  // ЗДЕСЬ ВЫЛЕТАЕТ ОШИБКА
            MessageBox.Show(form.Employee.Name + ": was hired");
        }

        UpdateEmp();
    }

Нашел инфу, что есть в таблицах выполнить SET IDENTITY_INSERT NameTable ON, то всё заработает, выполнил во всех таблицах и о чудо, я смог добавить одного Employee, но дальше ситуация повторилась и теперь у меня есть один employee в таблице и больше ничего не могу туда добавить, вот ж курьёз.)


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

Автор решения: Кирилл

The major cause of the “IDENTITY_INSERT is set to off C#” error is when you’re trying to insert a value into an identity column when the IDENTITY_INSERT property is off. In SQL server, when this property is off, you’re leaving it to SQL Server to increment the value of the identity column without your intervention.

таким образом нужно не присваивать Id через код, а позволить таблице делать это самоcтоятельно.

на всякий случай ссылка на статью: https://www.positioniseverything.net/identity_insert-is-set-to-off/#:~:text=The%20major%20cause%20of%20the,identity%20column%20without%20your%20intervention.

→ Ссылка