4

我最近決定在ASP.NET Core MVC開發的網站上實現ASP.NET Identity功能。EntityFrameworkCore Identity的繼承問題

讓我們快速瀏覽一下表和類話題:

public class User : IdentityUser 
{ 
    public string FirstName { get; set; } 
    public stirng LastName { get; set; } 
    public int CountryId { get; set; } 

    public Country Country { get; set; } 
} 

public class Country 
{ 
    public int Id { get; set; } 
    public string ISO { get; set; } 
    public string Name { get; set; } 
} 

Country類是有些無關緊要,但如果你想從User類參考。

有了這個設置,我已經配置了我的數據庫環境是這樣的:

public class DatabaseContext : IdentityDbContext<User> 
{ 
    protected override void OnModelCreating(ModelBuilder builder) 
    { 
     base.OnModelCreating(builder); 

     builder.Entity<IdentityUser>.ToTable("User"); 
     builder.Entity<IndentityRole>.ToTable("Roles"); 
     builder.Entity<IdentityUserRole<string>>.ToTable("UserRoles"); 
     builder.Entity<IdentityUserClaim<string>>.ToTable("UserClaims"); 
     builder.Entity<IdentityUserLogin<string>>.ToTable("UserLogins"); 
    } 
} 

我使用自定義表(更名)像這樣映射它們。

問題

現在,每當我跑我的項目,在第一次數據庫調用我做,我得到了以下錯誤:

The entity type 'User' should derive from 'IdentityUser' to reflect the hierarchy of the corresponding CLR types.

對我來說,這個錯誤說:我的類User不從接口IdentityUser繼承,我不太清楚爲什麼是這樣?很明顯,我的課User是否繼承IdentityUser

任何可能的幫助,高度讚賞!

+0

什麼是您的用戶類看起來像? –

+0

我已經發布 – Detilium

+0

我想你將不得不添加另一個IdentityUser類型的實體,因爲否則EF將無法將用戶存儲在數據庫中 - 它會將每個類分別存儲在層次結構中。 –

回答

0

而是在您添加身份服務啓動類的

builder.Entity<IdentityUser>.ToTable("User"); 

你需要把

builder.Entity<User>.ToTable("Users"); 

而你需要做的

services.AddIdentity<User, IdentityRole>(); 
+0

更改後需要進行的任何測量? – Lobato