2017-11-12 10 views
1

.NET Core 2を使用することに決めましたが、問題が発生しています。 Microsoftのドキュメントによれば、ナビゲーションプロパティは基本クラスIdentityUserに存在しなくなりました。ASP.NET CORE 2 IdentityUser POCOエラー

私は、各ユーザーが自分のビューモデルではありますが、私は自分のアプリケーションのユーザー・クラスにこれを入れたときにどのような役割参照することができます。

public virtual ICollection<IdentityUserRole<int>> Roles { get; } = 
    new List<IdentityUserRole<int>>(); 
public virtual ICollection<IdentityUserClaim<int>> Claims { get; } = 
    new List<IdentityUserClaim<int>>(); 
public virtual ICollection<IdentityUserLogin<int>> Logins { get; } = 
    new List<IdentityUserLogin<int>>(); 

と私のモデルビルダーにこれを追加します。

builder.Entity<ApplicationUser>() 
    .HasMany(e => e.Claims) 
    .WithOne() 
    .HasForeignKey(e => e.UserId) 
    .IsRequired() 
    .OnDelete(DeleteBehavior.Cascade); 

builder.Entity<ApplicationUser>() 
    .HasMany(e => e.Logins) 
    .WithOne() 
    .HasForeignKey(e => e.UserId) 
    .IsRequired() 
    .OnDelete(DeleteBehavior.Cascade); 

builder.Entity<ApplicationUser>() 
    .HasMany(e => e.Roles) 
    .WithOne() 
    .HasForeignKey(e => e.UserId) 
    .IsRequired() 
    .OnDelete(DeleteBehavior.Cascade); 

エラーが発生するThe entity type 'IdentityUserLogin<int>' requires a primary key to be defined.

関連するMicrosoftのマニュアルはこちらhttps://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x

User.Roleの値を表示するにはどうすればよいですか?

答えて

2

Genericを使用せずにIdentityUserを拡張してプライマリキーのタイプを定義する場合、デフォルトのタイプ(文字列)が使用されます。

この場合、ナビゲーションエンティティのキ​​ーのタイプをintからstringに変更する必要があります。

あなたApplicationUserクラスは、この

public class ApplicationUser : IdentityUser 
{ 
    public virtual ICollection<IdentityUserRole<string>> Roles { get; } = new List<IdentityUserRole<string>>(); 
    public virtual ICollection<IdentityUserClaim<string>> Claims { get; } = new List<IdentityUserClaim<string>>(); 
    public virtual ICollection<IdentityUserLogin<string>> Logins { get; } = new List<IdentityUserLogin<string>>(); 
} 
+0

恐ろしいのようになります!ありがとう、それは働く:) –

+0

あなたがそれが役に立つと分かった場合、答えをupvoteしてください。また、それがあなたの質問に答えるならば、それを正しい答えとして受け入れるべきです。 –

+0

私は正しい答えとして受け入れてくれましたが、私のアップヴォートは記録されましたが、公に表示されるという評判は十分ではありません –

関連する問題