我正在使用ASP.NET Identity 2.0。目前,我謹表UserDetails
像FirstName
等擴展應用程序用戶如何正確設置來自共享項目的關係
什麼是我的問題,延長ApplicationUser
(改名爲AspNetUsers
到Users
)? 我有分開的類庫項目存儲EF模型。我不想生成另一個EF模型(如果沒有必要的話)。
我已經在用戶表和UserDetails
表之間的SQL Server關係中,沒關係。不幸的是,在ASP項目中,用戶表格是在IdentityUser
深處硬編碼的地方。這意味着我有ApplicationUser
,它繼承IdentityUser
。
那我想是在AppDbContext
:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Ignore columns
builder.Entity<ApplicationUser>().Ignore(c => c.PhoneNumberConfirmed);
// Rename tables
builder.Entity<ApplicationUser>().ToTable("Users");
builder.Entity<IdentityRole>().ToTable("Roles");
builder.Entity<IdentityRoleClaim<string>>().ToTable("IdentityRoleClaims");
builder.Entity<IdentityUserClaim<string>>().ToTable("IdentityUserClaims");
builder.Entity<IdentityUserLogin<string>>().ToTable("IdentityUserLogins");
builder.Entity<IdentityUserToken<string>>().ToTable("IdentityUserTokens");
// Relationship
builder.Entity<ApplicationUser>()
.HasOne(p => p.UserDetails)
.WithOne(i => i.Users)
.HasForeignKey<Shared.Database.UserDetails>(u => u.UserID);
}
問題是最後一行在WithOne(i => i.Users)
,i.Users
不ApplicationUser
。有趣的是,ApplicationUser
具有相同的屬性,如i.Users
:D
所以我只需要知道如何正確地將其轉換爲關係。
任何想法如何解決這個問題?或者任何建議如何以另一種方式做到這一點?
共享的項目所使用的1個額外項目(WCF),所以我不能把有來自IdentityUser
繼承:/
謝謝你們。
這是我正在尋找的答案,不幸的是它不是如何做到這一點,因爲實體關係總會出現一些錯誤。我必須完全重新設計它。無論如何謝謝:) – user1085907
不客氣,很高興它幫助。雖然我希望它是一個真正的解決方案,不知道你的真實情況有什麼影響,但我想你知道更好:) –
嗯,事情是,asp.net核心不支持ado.net在它不適合我基本的實體框架。所以我的下一步是生成基於實體框架核心的數據庫模型,它應該解決那些麻煩:) – user1085907