我有一个User
模型和一个UserRole
模型。在数据库中,UserRole是枚举数(如下所示)。初始化数据库时,Users表具有一列UserRoleId,因此我假设Entity Framework正确建立了关系。
但是,当我尝试添加用户时,出现一个错误,即EF试图在UserRole
表中创建一个新条目。
我不希望它在UserRole
表中创建新条目,我希望将一个数字插入到User表的UserRoleId
列中,以引用{ {1}}表。
错误:
Microsoft.EntityFrameworkCore.Database.Command:错误:执行DbCommand失败(2ms)[Parameters = [@ p0 ='?' (DbType = Int32),@ p1 ='?' (大小= 4000)],CommandType ='文本',CommandTimeout = '30']
设置NOCOUNT ON;
插入[UserRoles]([Id],[Role])
值(@ p0,@ p1);System.Data.SqlClient.SqlException(0x80131904):当IDENTITY_INSERT设置为OFF时,无法在表'UserRoles'中为身份列插入显式值。
数据库中的UserRoles表:
UserRole
型号:
ID | Role
==============
1 | Viewer
2 | Owner
3 | Admin
答案 0 :(得分:0)
正如Camilo Terevinto指出的那样,有必要将UserRoleId显式添加到User模型。之后,Add-Migration
和Update-Database
,并更改前端,控制器和DTO,以便传递UserRoleId而不是UserRole对象。
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public byte[] PasswordHash { get; set; }
public byte[] PasswordSalt { get; set; }
public int UserRoleId { get; set; } //<--- THE IMPORTANT PARTS
public UserRole UserRole { get; set; } //<--- THE IMPORTANT PARTS
...
}