私はASP.NET Identity 2.0を使用しています。現在、私はApplicationUserを共有プロジェクトから適切な関係を設定する方法を拡張する
などFirstName
のようなテーブル
UserDetails
によって
ApplicationUser
(
Users
へ
AspNetUsers
に改称)を拡張したいと思い、私の問題は何ですか? EFモデルを格納するクラスライブラリプロジェクトを分離しました。私は別のEFモデルを生成するのは嫌いです(必要でない場合)。
私はUsersテーブルとUserDetails
テーブルの間にSQL Serverの関係がありますが、それは問題ありません。残念ながら、ASPプロジェクトのUsersテーブルでは、IdentityUser
のどこか深くハードコードされています。つまり、IdentityUser
を継承するApplicationUser
があることを意味します。私がしようとしています何
は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