2

我将使用身份框架(代码优先方式)创建一个数据库,但是当我在包管理器中运行下面的代码时出现错误。

PM> Enable-Migrations -ContextTypeName FreeTime.AspMvc.Context.FreeTimeContext -Force

这是我的错误:

  • IdentityUserLogin: : EntityType IdentityUserLogin没有定义键。为此定义密钥EntityType

  • IdentityUserRole: : EntityType IdentityUserRole没有定义键。为此定义密钥EntityType

  • IdentityUserLogins: EntityType: EntitySet IdentityUserLogins基于IdentityUserLogin没有定义键的类型。

  • IdentityUserRoles: EntityType: EntitySet IdentityUserRoles基于IdentityUserRole没有定义键的类型。

更多信息:

更多信息 (点击查看全屏)

在其他类中,我创建了一个名为的属性类型,ApplicationUser并且为持有女巫用户UserId命名的字符串类型之一已成为女巫主题。User这里有一个例子:

public class Topic 
{
    [Key]
    public int TopicId { get; set; }

    [ForeignKey("dbo.AspNetUsers.Id")]
    public string UserId { get; set; }

    public ApplicationUser User { get; set; }
}

小更新:这是我的上下文文件:

public class FreeTimeContext: DbContext
{
    public DbSet<Topic> Topics { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }
}

我还看到有第二个上下文文件名为ApplicationDbContext.

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("FreeTimeContext" /* --> this I've edited into my own name */,
               throwIfV1Schema: false)
    {
    }

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

大更新:在后来的状态中,我尝试了其他类似下面列表的方法:

  1. 首先,我尝试为ApplicationDbContext. 这是我已经完成的步骤。

    • 首先我运行了这段代码:

      PM> 启用迁移-ContextTypeName FreeTime.AspMvc.Models.ApplicationDbContext -Force

      这是在没有错误的情况下完成的。

    • 然后我运行了这个:

      PM> 添加迁移“initAspTables”

      这段代码也没有问题。

    • 最后我更新了我的数据库:

      PM>更新-数据库

      也顺利完成。

    • 检查表是否创建到服务器管理器中→检查但不包含我自己的表。☹

      服务器管理器中的对象资源管理器与我的数据库和表。

    结论:不是我将拥有的。

  2. 我做的第二件事是继承FreeTimeContextApplicationContext不是DbContext下面的代码。

    公共类 FreeTimeContext:ApplicationDbContext
    {
        公共 DbSet 主题 { 获取;放; }
    
        公共 FreeTimeContext(): 基数()
        { }
        // 其他代码
    }

    再次尝试使用以下代码启用迁移:

    PM> 启用迁移 -ContextTypeName FreeTime.AspMvc.Context.FreeTimeContext -Force

    但我有这个错误:

    on 类型的ForeignKeyAttributeon 属性无效。在依赖类型上找不到导航属性。Name 值应该是有效的导航属性名称。UserIdFreeTime.AspMvc.Models.Topicdbo.AspNetUsers.IdFreeTime.AspMvc.Models.Topic

    更多信息:

    更多信息(点击查看全屏)

    结论:没用。

你能帮助我吗?我不知道我还能做些什么来将该类ApplicationUser连同我自己的类一起迁移到数据库中。

4

0 回答 0