asp.net-mvc – 存储库模式vs DAL

他们是一回事吗?刚刚完成看Rob Connery’s Storefront tutorial,他们似乎是类似的技术。我的意思是,当我实现一个DAL对象,我有GetStuff,添加/删除等方法,我总是先写该接口,以便我以后可以切换db。

我很困惑的事情?

你绝对不是一个混淆的东西。 🙂

我认为这个问题的答案取决于你想要多少纯粹主义者。

如果你想要一个严格的DDD观点,这将带你走一条路径。如果你把存储库看成一个模式,帮助我们标准化服务和数据库之间的层的接口,它会带你下一个。

从我的角度来看,存储库只是一个明确指定的数据访问层。换句话说,实现您的数据访问层的标准化方法。不同的存储库实现之间存在一些差异,但概念是相同的。

有些人会在存储库上放置更多的DDD约束,而其他人则会使用存储库作为数据库和服务层之间的方便的中介。像DAL这样的存储库将服务层与数据访问细节隔离开来。

似乎使它们不同的一个实现问题是,存储库通常使用接受规范的方法创建。存储库将返回满足该规范的数据。我看到的大多数传统DAL,将有一套更大的方法,其中的方法将采取任何数量的参数。虽然这听起来可能有点小的差别,但当你进入Linq和表达式的领域时,这是一个大问题。
我们的默认存储库接口如下所示:

public interface IRepository : IDisposable
{
    T[] GetAll<T>();
    T[] GetAll<T>(Expression<Func<T, bool>> filter);
    T GetSingle<T>(Expression<Func<T, bool>> filter);
    T GetSingle<T>(Expression<Func<T, bool>> filter, List<Expression<Func<T, object>>> subSelectors);
    void Delete<T>(T entity);
    void Add<T>(T entity);
    int SaveChanges();
    DbTransaction BeginTransaction();
}

这是DAL还是存储库?在这种情况下,我猜它的两个。

http://stackoverflow.com/questions/291344/repository-pattern-vs-dal

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:asp.net-mvc – 存储库模式vs DAL