C# 实体框架6标识用户代码首次发布
我是EF的新手,所以这给我带来了很多问题 我偷看了EF附带的IdentityUser的代码,看起来是这样的:C# 实体框架6标识用户代码首次发布,c#,entity-framework,identity,asp.net-identity,C#,Entity Framework,Identity,Asp.net Identity,我是EF的新手,所以这给我带来了很多问题 我偷看了EF附带的IdentityUser的代码,看起来是这样的: public class IdentityUser : IUser { public IdentityUser(); public IdentityUser(string userName); public virtual ICollection<IdentityUserClaim> Claims { get; } public virtua
public class IdentityUser : IUser
{
public IdentityUser();
public IdentityUser(string userName);
public virtual ICollection<IdentityUserClaim> Claims { get; }
public virtual string Id { get; set; }
public virtual ICollection<IdentityUserLogin> Logins { get; }
public virtual string PasswordHash { get; set; }
public virtual ICollection<IdentityUserRole> Roles { get; }
public virtual string SecurityStamp { get; set; }
public virtual string UserName { get; set; }
}
public class IdentityUserLogin
{
public IdentityUserLogin();
public virtual string LoginProvider { get; set; }
public virtual string ProviderKey { get; set; }
public virtual IdentityUser User { get; set; }
public virtual string UserId { get; set; }
}
您可以看到,这意味着存在预期的多对一关系,但是LoginProvider是该模型的关键。我试图将登录提供者和用户ID映射为密钥,但现在当我尝试登录时,却找不到该用户
肯定有人遇到了这个问题并解决了它。
如果有,你能告诉我正确的方向吗
干杯
/r3plica用户和IdentityUserLogin之间的关系应为设计的一对多关系。这只保存了OAuth登录到各种提供商(如Google和Facebook)的信息。一个用户可以有多个这样的帐户,他们可以选择使用这些帐户进行登录。IdentityUserLogin的键实际上是UserId、LoginProvider和ProviderKey的组合。您在数据库中到底要映射到什么,为什么要映射到IdentityUserLogin而不是从IdentityUser派生的用户对象?问题是我已经拥有了数据库。我试图使用EF创建一个干净的数据库来查看表结构,但正如我所说的,它创建了以UserId为键的表,然后添加了另一个名为User_Id的列作为FK。这显然是错误的,所以它对我现有的数据库没有帮助。现在您已经告诉我这是三者的组合,我可以为其创建映射并进行测试。如果它起作用,那就太酷了:)