在我跟着this将应用程序用户ID的类型从字符串更改为int后,如果我尝试创建新用户,则会收到SqlException。
确切的错误是:
无法将值NULL插入列'Id'表'DBNAME.dbo.AspNetUsers';列不允许空值。 INSERT失败。声明已经终止。
Line 208: };
Line 209:
Line 210: var result = await UserManager.CreateAsync(user, model.Password);
Line 211: if (result.Succeeded)
Line 212: {
Source File: C:\Projects\ProjectName\ProjectName\Controllers\MembersController.cs Line: 210
[SqlException (0x80131904): Cannot insert the value NULL into column 'Id', table 'DBNAME.dbo.AspNetUsers'; column does not allow nulls. INSERT fails.
The statement has been terminated.]
我看过How to tell the primary key 'Id' of IdentityUser class is IDENTITY(1,1)? 和ASP.NET Identity - Error when changing User ID Primary Key default type from string to int AND when using custom table names,但对我帮助不大。
非常感谢任何帮助。
答案 0 :(得分:0)
您的身份不再为您生成密钥的问题 - 它之前就已经过了。
要使此问题起作用,您需要获取由数据库自动生成的密钥。要完成此操作,您需要在Id
类的ApplicationUser
属性中应用以下属性:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override int Id { get; set; }
并添加另一个数据库迁移,以确保数据库知道如何处理此字段。
UPD :oops。刚刚注意到你已经链接到我的相同答案。这没有用吗?