我试图了解如何正确使用存储库模式.Aggregate Root的核心概念不断涌现.在搜索Web和Stack Overflow以获取有关聚合根的帮助时,我会不断发现有关它们的讨论以及指向应该包含基本定义的页面的死链接.
在存储库模式的上下文中,什么是聚合根?
design-patterns ddd-repositories aggregateroot repository-pattern
根据我的理解,MVC通过作为控制器的"胶水"将类定义(模型)与表示(视图)分开.控制器应该有一个责任,因此是可测试的.ViewModels用于汇集来自多个实体的数据,并从控制器"按摩"视图.
看起来业务逻辑并没有真正占有一席之地......所以我认为另一层服务是合适的.我只是不确定在哪里放置这个层,或者如何构建服务 - 它应该是一个名为"services"的类,它包含一堆函数吗?我对MVC有点新意,所以任何阅读材料,样本或一般新人的提示都会很棒.
我刚刚看到了GenericRepository的实现:
namespace ContosoUniversity.DAL
{
public class GenericRepository<TEntity> where TEntity : class
{
internal SchoolContext context;
internal DbSet<TEntity> dbSet;
public GenericRepository(SchoolContext context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
public virtual IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "")
{
IQueryable<TEntity> query = dbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != …Run Code Online (Sandbox Code Playgroud) 我在这篇文章中读到他们正在使用依赖注入来在每个mvc请求上加载存储库实例.
我不确定我是否理解正确,但我目前在我的mvc应用程序中使用.UserRepository它实现了IUserRepository接口.此接口注入控制器构造函数
public class UserController : Controller
{
private IUserRepository repository;
public UserController(IUserRepository rep)
{ repository = rep; }
public UserController() : this(new UserRepository()) {}
}
Run Code Online (Sandbox Code Playgroud)
但我没有看到使用这个接口的任何好处(IUserRepository)我可以使用UserRepository没有接口.显然有人认为这是正确的方法(我已经在apress mvc4书上找到了它)我会请求有人详细说明为什么这是更好的方法而不是使用没有接口的存储库.
考虑到这一点,我会请任何人分享有关如何实现此方法的具体示例或链接(使用依赖注入来在每个mvc请求上加载存储库实例).