【发布时间】:2020-03-02 21:55:28
【问题描述】:
我使用了User 的自定义实现,它是从IdentityUser 派生的Asp.Net Core Identity:
public class AppUser : IdentityUser
{
...
}
如果我调用方法:
var identityResult = await UserManager.CreateAsync(user);
我得到错误:
System.InvalidOperationException:无法跟踪“AppUser”类型的实体,因为主键属性“Id”为空。
它与Microsoft.AspNetCore.Identity.EntityFrameworkCore - 2.2.0 的版本完美配合,但升级到3.0.0 后 - 它不起作用。
我在创建用户的测试过程中也遇到了同样的错误,我使用了以下UserManager 配置:
【问题讨论】:
-
检查是否
user.Id == null。有一个与字符串键相关的breaking change in EF Core 3.0,但是3.0 中的IdentityUser类在构造函数中将Id 设置为Guid.NewGuid().ToString()。因此,您要么使用旧的身份类,要么将Id显式设置为null,,要么不继承IdentityUser,而是继承IdentityUser<string>。 -
User.Id 为空,但它适用于 .net core 2.2。你有什么修复它的建议?
-
好吧,确保它不为空。或者使用中断更改链接中的建议 - 在 Mitigations 下可以通过...获得 3.0 之前的行为...
-
你是对的,你能把你的小费像答案一样吗?我会接受的。我通过正确的映射解决了这个问题。谢谢。
标签: asp.net-core entity-framework-core asp.net-core-identity