が、私はこのエラーを取得しています使用して、このエラーを取得するは、Entity Frameworkのナビゲーションプロパティ
「役割」は派生しない参照ナビゲーションプロパティを にエンティティタイプ 「Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole」逆のナビゲーション プロパティ 'User'が宣言されているタイプ 'SafeWare.Models.ApplicationUserRole'から。
見に
bool ret = _userManager.Users.SingleOrDefault(x => x.UserName == userName) != null;
この機能検査を呼び出している間は、ユーザーが存在しています。ここで
は私のオブジェクトです:
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base()
{
Users = new HashSet<ApplicationUserRole>();
}
public ApplicationRole(string name, string description) : base(name)
{
this.Description = description;
}
public virtual string Description { get; set; }
[InverseProperty("Role")]
[DisplayName("Users")]
public new virtual ICollection<ApplicationUserRole> Users { get; set; }
}
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public ApplicationUser()
{
FileUploads = new HashSet<FileUpload>();
Roles = new HashSet<ApplicationUserRole>();
}
[InverseProperty("User")]
[DisplayName("Roles")]
public new virtual ICollection<ApplicationUserRole> Roles { get; set; }
}
public class ApplicationUserRole : IdentityUserRole
{
public ApplicationUserRole()
{
}
[ForeignKey("Id")]
public virtual ApplicationUser User { get; set; }
[ForeignKey("Id")]
public virtual ApplicationRole Role { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers");
modelBuilder.Entity<ApplicationRole>().HasKey<string>(r => r.Id).ToTable("AspNetRoles");
modelBuilder.Entity<ApplicationUserRole>().HasKey(r => new { r.UserId, r.RoleId }).ToTable("AspNetUserRoles");
modelBuilder.Entity<ApplicationUser>().HasMany(u => u.Roles).WithRequired().HasForeignKey(ur => ur.User).WillCascadeOnDelete(value: false);
modelBuilder.Entity<ApplicationRole>().HasMany(r => r.Users).WithRequired().HasForeignKey(ur => ur.Role).WillCascadeOnDelete(value: false);
//modelBuilder.Entity<ApplicationRole>().HasMany<ApplicationUserRole>((ApplicationRole u) => u.Users);
//modelBuilder.Entity<ApplicationUser>().HasMany<ApplicationUserRole>((ApplicationUser u) => u.Roles);
}
}
助けてください!
私が間違っていることは分かりません。 IdentityUserRole宣言では、ApplicationRoleとApplicationUserの型が使用されます。さて、これは削除されたIdentityの古いバージョンです。 – chrisdyck