2016-04-17 26 views
1

ユーザー主キーを整数とカスタムテーブルにするために、ID 3を拡張しようとしています。 問題は、すべてのデータベースクラスをBaseEntityクラスから派生させたいが、ApplicationUserエンティティはIdentityUser<int>から派生させなければならないということです。ASP.NET Core 1.0 Identity 3&BaseEntity

一般的なリポジトリパターンを実装するにはBaseEntityが必要で、DbContextが必要です。

これは私が何をしたいのですが、C#は、複数のクラスの継承をサポートしていないものを、実際にある:

public class User : BaseEntity, IdentityUser<int> 
{ 

} 


public abstract class BaseEntity 
{ 
    public int Id{ get; set; } 

    //Some extra logic 

} 

あなたはこの1つ上の任意のアイデアを持っていますか?

は、私はおそらく何とかIdentityUser<int>をラップするインタフェースとそれを実装してもらえますか?

答えて

1

基本的には、IDフレームワークのベースがではなくIdentityUser<T>タイプに関連付けられているため、これを行うことができます。 Identity<T>Microsoft.AspNet.Identity.EntityFrameworkパッケージでのみ使用されます。

Microsoft.AspNet.Identity.EntityFrameworkのGitHubリポジトリには、IdentityUser<T>が実装されています。基本的にそれをフォークしてベースクラスを実装し、クラスとして使用することができます。

それ以外の場合は、新しい基本クラスを使用するために、すべてのストアを自分で実装する必要があります。 Microsoft.AspNet.Identityの基底はそのようなクラスに依存しないので、すべての汎用クラスはwhere TUser : classを持ちます。つまり、どのクラスでも使用できます。あなたはアイデンティティに基づいて独自の実装を実装したくない場合は

一つ簡単に解決策は、インターフェイスを使用することです:

次に、あなたのUserクラスは、この

public class IBaseEntity 
{ 
    int Id { get; set; } 
} 

public class User : IdentityUser<int>, IBaseEntity 
{ 
    public int Id { get; set; } 
} 
のようになります。
関連する問題