gpt4 book ai didi

c# - 类型 'Claims' 上的属性 'AspNetUser' 不是导航属性

转载 作者:可可西里 更新时间:2023-11-01 08:29:30 25 4
gpt4 key购买 nike

我正在使用 ASP.NET Identity 2.2。我正在将 ASP.NET 旧成员身份迁移到新身份系统。我正在按照 this article 中提到的步骤进行操作用于执行迁移。

我扩展了 IdentityUser 并添加了如下几个属性:

public partial class AspNetUser : IdentityUser
{
public AspNetUser()
{
CreateDate = DateTime.Now;
IsApproved = false;
LastLoginDate = DateTime.Now;
LastActivityDate = DateTime.Now;
LastPasswordChangedDate = DateTime.Now;
LastLockoutDate = DateTime.Parse("1/1/1754");
FailedPasswordAnswerAttemptWindowStart = DateTime.Parse("1/1/1754");
FailedPasswordAttemptWindowStart = DateTime.Parse("1/1/1754");
Discriminator = "AspNetUser";
LastModified = DateTime.Now;

this.AspNetUserClaims = new HashSet<AspNetUserClaim>();
this.AspNetUserLogins = new HashSet<AspNetUserLogin>();
this.AspNetRoles = new HashSet<AspNetRole>();
}
....
public virtual Application Application { get; set; }
public virtual ICollection<AspNetUserClaim> AspNetUserClaims { get; set; }
public virtual ICollection<AspNetUserLogin> AspNetUserLogins { get; set; }
public virtual ICollection<AspNetRole> AspNetRoles { get; set; }

}

AspNetUser 类中还有一些属性,为简洁起见未包括在内。

我能够使用身份系统成功注册用户:

 var manager = new ApplicationUserManager();
var user = new AspNetUser
{
UserName = UserName.Text.Trim(),
Email = Email.Text.Trim()
};

var result = manager.Create(user, Password.Text);

但是,当我通过电子邮件地址/用户名搜索任何用户时,出现异常:

var existingUser = manager.FindByEmail(emailAddress);

错误是:

The property 'Claims' on type 'AspNetUser' is not a navigation property. 
The Reference and Collection methods can only be used with navigation properties. Use the Property or ComplexProperty method.

更新:

如果我从 AspNetUser 类中删除 AspNetUserClaims 属性,那么我会得到一个新错误列表:

Schema specified is not valid. Errors: 
The relationship 'JanEntities.FK__AspNetU__Appli__628FA481' was not loaded because the type 'MyEntities.AspNetUser' is not available.
The following information may be useful in resolving the previous error:
The required property 'AspNetUserClaims' does not exist on the type 'SampleApp.Core.AspNetUser'.


The relationship 'MyEntities.AspNetUserRole' was not loaded because the type 'MyEntities.AspNetUser' is not available.
The following information may be useful in resolving the previous error:
The required property 'AspNetUserClaims' does not exist on the type 'SampleApp.Core.AspNetUser'.


The relationship 'MyEntities.FK_dbo_AspNetUserClaim_dbo_AspNetUser_User_Id' was not loaded because the type 'MyEntities.AspNetUser' is not available.
The following information may be useful in resolving the previous error:
The required property 'AspNetUserClaims' does not exist on the type 'SampleApp.Core.AspNetUser'.


The relationship 'MyEntities.FK_dbo_AspNetUserLogin_dbo_AspNetUser_UserId' was not loaded because the type 'MyEntities.AspNetUser' is not available.
The following information may be useful in resolving the previous error:
The required property 'AspNetUserClaims' does not exist on the type 'SampleApp.Core.AspNetUser'.

以下是包含新的 ASP.NET 身份表的数据库图表: enter image description here

谁能帮我解决这个问题?非常感谢任何帮助。

最佳答案

您可以在此处查看 IdentityUser 的属性:https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.entityframework.identityuser_properties(v=vs.108).aspx

如您所见,声明、登录、角色等属性已经存在。默认情况下,asp.net 身份使用 DbContext,它继承自 IdentityDbContext https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.entityframework.identitydbcontext%28v=vs.108%29.aspx

这个类配置了很多东西,比如表映射等。我们可以看到你的 DbContext 吗?

因此,首先,尝试从构造函数中删除添加的 ICollections 及其初始值设定项。

关于c# - 类型 'Claims' 上的属性 'AspNetUser' 不是导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29915487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com