微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ASP.NET MVC 5 中使用实体框架代码优先添加涉及引用 ApplicationUser 的实体的迁移问题

如何解决在 ASP.NET MVC 5 中使用实体框架代码优先添加涉及引用 ApplicationUser 的实体的迁移问题

ASP.NET MVC 5,当涉及引用 ApplicationUser 实体的​​实体时,我在添加迁移时遇到了一些问题。我在创建项目时使用个人帐户进行身份验证。

public class Blog
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [ForeignKey("ApplicationUser")]
    public string ApplicationUserId { get; set; }

    public ApplicationUser ApplicationUser { get; set; }

    [required]
    [StringLength(500,ErrorMessage = "The {0} must be at least {2} characters long.")]
    public string Content { get; set; }
}

public class ApplicationUser : IdentityUser
{
    public bool IsSoftDeleted { get; set; }

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        var userIdentity = await manager.CreateIdentityAsync(this,DefaultAuthenticationTypes.ApplicationCookie);
        return userIdentity;
    }
}

而我的 DBContexts 是

public class ApplicationUserDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationUserDbContext()
        : base("DefaultConnection",throwIfV1Schema: false)
    {
    }

    public static ApplicationUserDbContext Create()
    {
        return new ApplicationUserDbContext();
    }
}

public class BloggingServiceDbContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    public BloggingServiceDbContext() : base("DefaultConnection")
    {
    }
}

我在包管理控制台上运行的脚本是:

Add-Migration InitialBlogMigration -ConfigurationTypeName BloggerConfiguration

我得到的错误是:

BloggingService.Web.Context.IdentityUserLogin:: EntityType 'IdentityUserLogin' 没有定义键。定义此 EntityType 的键。
BloggingService.Web.Context.IdentityUserRole:: EntityType 'IdentityUserRole' 没有定义键。定义此 EntityType 的键。
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' 基于未定义键的类型 'IdentityUserLogin'。
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' 基于未定义键的类型 'IdentityUserRole'。

注意:在实现 Blog 之前,运行 add-migration 没有问题,并且数据库不包含错误消息中提到的任何实体。

关于可能是什么问题,我已经没有线索了。你能帮我找出问题吗?

解决方法

解决方案似乎很简单,我需要将所有实体都放在将 ApplicationUser 引用到 ApplicationUserDbContext 的位置。但我仍然不知道为什么会这样,如果有人能为我澄清这一点就好了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。