前のトピックでは、既定の ASP.NET ID と独自のテーブル コンテキストをマージすることに成功しました。次の ASP.NET Identity の問題、テーブルの POCO を操作している汎用リポジトリが、デフォルトの ApplicationUser のように継承された POCO を操作しない: IdentityUser
汎用リポジトリで既定の ASP.Net Identity エンティティを使用するにはどうすればよいでしょうか?
これが私の汎用リポジトリの主要部分です。
public class RepositoryBase<TContext, TEntity> : IRepositoryBaseAsync<TEntity>, IDisposable
where TContext : IdentityDbContext<MyContext.ApplicationUser>
where TEntity : class
{
private readonly TContext _context;
private readonly IObjectSet<TEntity> _objectSet;
protected TContext Context
{
get { return _context; }
}
public RepositoryBase(TContext context)
{
if (context != null)
{
_context = context;
_objectSet = (_context as IObjectContextAdapter).ObjectContext.CreateObjectSet<TEntity>();
}
else
{
throw new NullReferenceException("Context cannot be null");
}
}
}
もちろん、リポジトリにはAdd、Queryなどのメソッドがありますが、この質問では不要です。