0

我正在開發使用Visual Studio 2013的ASP.NET MVC項目。我正在使用實體框架代碼優先方法與數據庫進行交互。但是由於ASP.NET中的內置身份系統,我在遷移數據時遇到了問題。在我接觸身份系統之前,一切都很好。無法遷移實體框架中的AspNetUser實體.NET代碼優先方法

這些是我所做的步驟。

  1. 我使用內置身份系統從UI註冊了一個帳戶。所以AspNetUsers表是在數據庫中創建的。

  2. 我爲我的代碼創建了AspNetUser類,因爲我需要使用它。

  3. 然後我運行遷移和更新數據庫命令。它會拋出錯誤。

這是我AspNetUser類

public class AspNetUser 
    { 
     [Required] 
     public String Id { get; set; } 
     [Required] 
     public String UserName { get; set; } 
     public String PasswordHash { get; set; } 
     public String SecurityStamp { get; set; } 
     [Required] 
     public String Discriminator { get; set; } 
    } 

這是我的數據庫上下文類

public class AyarDbContext : DbContext 
    { 
     public AyarDbContext() 
      : base("DefaultConnection") 
     { 

     } 

     public DbSet<Category> Categories { get; set; } 
     public DbSet<Region> Regions { get; set; } 
     public DbSet<Area> Areas { get; set; } 
     public DbSet<Item> Items { get; set; } 
     public DbSet<ItemContactInfo> ItemContacts { get; set; } 
     public DbSet<Gallery> Galleries { get; set; } 
     public DbSet<Mail> Mails { get; set; } 
     public DbSet<AspNetUser> AspNetUsers { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 

     } 
    } 

這是我的錯誤。

數據庫中已經有一個名爲'AspNetUsers'的對象。

如何遷移AspNetUser類?我使用用戶界面註冊,因爲我自動創建其他表需要身份系統。我如何遷移該類,並使用已存在於數據庫中的AspNetUsers表進行映射。

回答

0

由於錯誤解釋,該表已經存在,並且以這種方式訪問​​:

var user = context.Users.First(u => u.Id == myId); 

如果你想擴展用戶類,並添加屬性,你可以繼承它:

public class MyAppUser : IdentityUser 
{ 
    // don't include properties already in IdentityUser 
    public string MyNewProperty { get; set; } 
} 

http://johnatten.com/2014/06/22/asp-net-identity-2-0-customizing-users-and-roles/

+0

也許,我可以在代碼中訪問用戶。如果我不得不在未來再次更新我的模型會怎麼樣?那個錯誤會再次出現在我身上。 –

+0

是的,您可以使用上面顯示的代碼或用戶管理器訪問用戶表。取決於你想要做什麼。如果你只是想添加其他屬性繼承和添加屬性。如果您想重做密碼散列或內部結構是一項重大努力(IMO) –

+0

否我不能在這種情況下使用遷移添加新實體,因爲AspNetUser包含在遷移類文件中。 –

相關問題