使用MVC的经典ado.net的UOW +存储库

时间:2012-02-08 05:02:24

标签: c# asp.net-mvc ado.net repository

我已经从stackoverflow.com读了两个问题

  1. Is Classic ADO.NET still used?
  2. Using ASP.Net MVC with Classic ADO.Net
  3. 我真的很感激他们两个 我非常喜欢Repository Design Pattern,我想在我的项目中使用ASP.net MVC和Classic Ado.net。

    上面的问题2解释了我如何使用存储库模式和经典的ado.net技术。

    我想知道的一件事是,当涉及到经典的ado.net技术时,是否可以使用与工作单元相结合的存储库模式。

    有人可以给我任何参考链接吗?

    如果仅存在Repository + Classic Ado.net的引用,那么请告诉我该引用。

2 个答案:

答案 0 :(得分:3)

确实可以将UoW,Repository和“经典”ADO.NET结合起来。

但是,您的UoW需要根据实体类型访问相关的存储库。您可以让您的存储库实现通用接口。例如:

public interface IRepository<T>
{
    void Add(T instance);
    T Get(Guid id);
    void Remove(Guid id);
    void Remove(T instance);
}

由于每个UoW都是一个单独的实例,因此您需要使用工厂。然后,该工厂将存储库注入到UoW中,或者为其提供一些IRepositoryProvider实例,该实例可以根据类型返回相关的存储库。所以从概念上讲:

public interface IRepositoryProvider
{
    IRepository<T> Get<T>();
}

这些非常广泛的笔画,所以我希望这是有道理的。

答案 1 :(得分:2)

IMO如果你想使用Repository和UoW,没有理由使用“经典”ADO.Net。各种ORM框架为您实现Repository + UoW模式,您只需将它们插入应用程序(假设您的应用程序是围绕这些模式设计的)。

当我没有想要使用Repository / UoW模式(例如,事务脚本模式)时,我只使用经典的ADO.Net。