Я пытаюсь вставить новую строку в мою таблицу, используя EF Core, SQL Server и C #, но у меня возникают проблемы с тем, чтобы EF Core правильно использовал столбец идентификаторов.
Вот что я делаю:
Я создаю новый объект, используя сгенерированный класс Entity Framework (определение класса сущности я включил в конце моего сообщения)
EmployeePermissions employee_permission = new EmployeePermissions
{
FkEmployee = PkEmployee,
FkPermission = permission_key
};
Затем я вызываю db.EmployeePermissions.add(employee_permission)
, который работает на всех моих вызовах, откуда приходит объект [FromBody] <Entity Class> <object_variable>
(хотя и с использованием других таблиц).
Но здесь, когда я сам создаю экземпляр класса, я получаю эту ошибку:
SqlException (0x80131904): Невозможно вставить явное значение для столбца идентификаторов в таблице 'Employee_Permissions', когда IDENTITY_INSERT имеет значениеустановите на OFF.
Я не понимаю, почему это происходит - я хочу, чтобы он автоматически увеличивал столбец идентификаторов. Я использовал ObjectDumper
, чтобы посмотреть, что передается .Add()
, а именно:
properties {
PkEmployeePermissions = 0 [System.Int32] // this is the identity column, of course
FkEmployee = 31 [System.Int32]
FkPermission = 6 [System.Int32]
FkEmployeeNavigation = <null>
FkPermissionNavigation = <null>
}
Я исследовал другие вызовы, которые работают нормально (те, где [FromBody]
создает объект) и столбец идентификаторов просто равен 0
в этих вызовах, поэтому я не понимаю, что здесь отличается.
Я что-то неправильно настроил в базе данных? Я дважды проверил в свойствах столбца, что столбец PkEmployeePermissions
действительно является столбцом идентификаторов, поэтому его следует автоматически увеличивать.
Вот класс Entity, если он помогает:
public partial class EmployeePermissions
{
public int PkEmployeePermissions { get; set; }
public int FkEmployee { get; set; }
public int FkPermission { get; set; }
public Employee FkEmployeeNavigation { get; set; }
public Permission FkPermissionNavigation { get; set; }
}