Asp.Netアイデンティティ3.0のカスタマイズ

asp.net asp.net-core asp.net-identity c# entity-framework-core

質問

Asp.Net Identity 3クラスをカスタマイズしたいと思います。

ここに私がしたことがあります:

public class MyDbContext : IdentityDbContext<User>

そして

public class User : IdentityUser<int>

また、 IdentityUserClaim<int>, IdentityRole<int>, IdentityUserLogin<int> and IdentityUserRole<int>拡張しましたが、次のエラーが発生します。

The type 'User' cannot be used as type parameter 'TUser' in the generic type or method' IdentityDbContext<TUser>'.There is no implicit reference conversion from 'User' to 'Microsoft.AspNet.Identity.EntityFramework.IdentityUser'.

受け入れられた回答

あなたのクラスにIdentityUser<int>を継承させる方法を知らないのですが、 `IdentityUser 'のジェネリックバージョンはより多くの型パラメータを持っています。ここで確認してください: https : //msdn.microsoft.com/en-us/library/dn613256%28v=vs.108%29.aspx

だから、あなたが必要になります:

public class User : IdentityUser<int, UserLogin, UserRole, UserClaim>

そして:

public class UserRole : IdentityUserRole<int> { }
public class UserClaim : IdentityUserClaim<int> { }
public class UserLogin : IdentityUserLogin<int> { }

編集:アイデンティティ3.0のものは少し異なりますが、問題は似ています。によると: https : //github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNet.Identity.EntityFramework/IdentityDbContext.cs

IdentityDbContext<TUser>は次のようになります。

public class IdentityDbContext<TUser> : IdentityDbContext<TUser, IdentityRole, string> where TUser : IdentityUser
{ }

重要な部分はwhere TUser : IdentityUser IdenityUserの定義は次のとおりです。

public class IdentityUser : IdentityUser<string>
{ ... }

また、 UserクラスはIdentityUser<int>継承しているため、 int / string違いにより 'IdentityUser'への暗黙的な変換は行われません。

解決策はIdentityDbContext<TUser, TRole, TKey>から継承することです.TUserはUserクラス、 TRoleIdentityRole<int>を継承する新しいRoleクラス、 TKeyintです。

public class MyDbContext : IdentityDbContext<User, Role, int> {...}
public class User : IdentityUser<int> {...}
public class Role : IdentityRole<int> {...}

人気のある回答

これで十分であるはずです:

public class ApplicationUser : IdentityUser<int>
{

}

public class ApplicationRole : IdentityRole<int>
{

}

public class MyDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>
{

}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ