首先参考ApplicationUser身份框架代码启用迁移

时间:2016-02-10 17:49:36

标签: asp.net entity-framework code-migration

我将创建一个带有身份框架的数据库(代码第一种方式),但是当我在包管理器中运行下面的代码时,我会出错。

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类型。

  •   

更多信息:

More information (点击查看全屏)

在其他类中,我创建了一个名为ApplicationUser的{​​{1}}属性类型,以及一个名为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

大更新:在稍后的状态下,我尝试过以下列表中的其他内容:

  1. 首先,我尝试启用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(); } } 的迁移。以下是我已经完成的步骤。

     
       
    •  

      首先我运行此代码:

       
      PM> enable-migrations -ContextTypeName FreeTime.AspMvc.Models.ApplicationDbContext -Force

      这样做没有错误。

       

    •  
    •  

      然后我运行了这个:

       

      PM> add-migration "initAspTables"
       

      此代码也没有问题。

       
    •  
    •  

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

       
      PM> Update-Database
       

      也没有问题。

       
    •  
    •  

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

       Object explorer from server manager with my database and the tables.  
    •   

    结论:不是我真正拥有的。

  2. 我做的第二件事是从ApplicationDbContext而不是FreeTimeContext继承ApplicationContext,如下面的代码。

    public class FreeTimeContext: ApplicationDbContext
    {
        public DbSet Topics { get; set; }
    
        public FreeTimeContext(): base() 
        { }
        // other code
    }

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

    PM> enable-migrations -ContextTypeName FreeTime.AspMvc.Context.FreeTimeContext -Force

    但我有这个错误:

    DbContext类型的ForeignKeyAttribute属性UserId无效。在依赖类型FreeTime.AspMvc.Models.Topic上找不到导航属性dbo.AspNetUsers.Id。 Name值应该是有效的导航属性名称。

    更多信息:

    More information (点击查看全屏)

    结论:无效。

  3. 你能帮帮我吗?我不知道还有什么办法可以将类FreeTime.AspMvc.Models.Topic和我自己的类一起迁移到数据库中。

0 个答案:

没有答案