MVCアプリケーションで汎用リポジトリとUoWパターンを使用しています。私の要求にはうまくいきます。しかし、ASP IDとMVCとの緊密な結合のため、これらのパターンとASP IDを統合することは非常に困難です。私のコードは以下の通りです:MVCアプリケーションで汎用リポジトリとUoWパターンでASP IDを使用する方法
// Repository Interface
public interface IRepository<TEntity> where TEntity : class
{
TEntity Get(int id);
IEnumerable<TEntity> GetAll();
IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> predicate);
void Add(TEntity entity);
void Remove(TEntity entity);
}
// Repository class
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
// db context defined
// IRepository implementation
}
// Domain Class
public class Author
{
public int AuthorId { get; set; }
public string Name { get; set; }
}
// DbContext class
public class AppContext : DbContext
{
public AppContext() : base("name=MyContext") {}
public virtual DbSet<Author> Authors { get; set; }
}
// Domain Interface
public interface IAuthorRepository : IRepository<Author>
{ // implement custom methods }
// Concrete class implementation
public class AuthorRepository : Repository<Author>, IAuthorRepository
{
public AuthorRepository(AppContext context) : base(context)
{}
public AppContext AppContext
{
get { return Context as AppContext; }
}
}
// UnitOfWork interface
public interface IUnitOfWork : IDisposable
{
IAuthorRepository Authors { get; }
int Complete();
}
// Unit of work class
public class UnitOfWork : IUnitOfWork
{
private AppContext context;
public UnitOfWork(AppContext context)
{
this.context = context;
Authors = new AuthorRepository(context);
}
public IAuthorRepository Authors { get; set; }
public int Complete()
{
return context.SaveChanges();
}
// dispose context
}
public class HomeController : Controller
{
private readonly IUnitOfWork uow;
public HomeController(IUnitOfWork uow) // using Dependency Injection
{
this.uow = uow;
}
public ActionResult Index()
{
var authors = uow.Authors.GetAll();
return View(authors);
}
}
上記の構造とASP Identityをどのように統合できるかについての私の指摘はありますか?
ありがとうございます。
[リポジトリと作業単位でのASP.NET ID]の可能な複製(https://stackoverflow.com/questions/23226140/asp-net-identity-with-repository-and-unit-of-work) –