У меня есть модель User
и модель UserRole
. В базе данных UserRole является перечислителем (визуализируется ниже). Когда я инициализировал базу данных, в таблице Users был столбец UserRoleId, поэтому я предположил, что Entity Framework правильно установил связь.
Однако, когда я пытаюсь добавить пользователя, я получаю сообщение об ошибке, что EF пытается создать новую запись в таблице UserRole
.
Я не хочу, чтобы он создавал новую запись в таблице UserRole
, я хочу, чтобы число вставлялось в столбец UserRoleId
таблицы User, который ссылается на роль в таблице UserRole
.
Ошибка:
Microsoft.EntityFrameworkCore.Database.Command: Ошибка: не удалось выполнить команду DbCommand (2 мс) [Parameters = [@ p0 = '?' (DbType = Int32), @ p1 = '?' (Размер = 4000)], CommandType = 'Text', CommandTimeout = '30 ']
SET NOCOUNT ON;
INSERT INTO [UserRoles] ([Id], [Role])
ЗНАЧЕНИЯ (@ p0, @ p1);
System.Data.SqlClient.SqlException (0x80131904): Невозможно вставить явное значение для столбца идентификаторов в таблице «UserRoles», если для IDENTITY_INSERT установлено значение OFF.
Таблица пользовательских ролей в БД:
ID | Role
==============
1 | Viewer
2 | Owner
3 | Admin
Модели:
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public byte[] PasswordHash { get; set; }
public byte[] PasswordSalt { get; set; }
public UserRole UserRole { get; set; } //<--- THE IMPORTANT PART
...
}
public class UserRole
{
public int Id { get; set; }
public string Role { get; set; }
}