2

我试图围绕我的 ASP.NET MVC 应用程序的存储库模式和依赖注入概念。

我看到了Repository Pattern with Entity Framework一文,非常喜欢代码的简单性。似乎没有那么多代码,而且都是完全通用的。也就是说,不需要像大多数人那样为数据库中的不同对象建立多个存储库。这正是我想要的。

但是,代码是先为代码编写的,我不打算使用它。

问题:

  1. 相同的代码不能用于不首先使用代码的应用程序是否有充分的理由?
  2. 有人可以为我不首先使用代码的应用程序推荐一种更好的方法吗?(请记住,我绝对喜欢这种通用模式。)
  3. 还有其他提示可以帮助我前进吗?
4

2 回答 2

3

您可以为任何底层数据存储创建存储库接口。您可以像这样简单地定义一个接口:

public interface IRepository
{
    IQueryable<T> GetQueryable<T>();

    void Insert<T>(T item);
}

然后,您可以在其后面实现一个将实现它的类。它不必是代码优先的;例如,您可以使用ObjectContext从 EDMX 文件创建的文件来支持它。

这里的关键是创建正确的抽象。您可以使用接口轻松地做到这一点,然后在幕后以您想要的方式实现它。

因为您使用的是依赖注入,所以实现并不重要,只要您正确定义了合约,实现(和测试)应该很简单。如果它不起作用,或者你想要一个完全不同的数据存储,你只需告诉你的依赖注入器使用不同的实现,合同不会改变。

您创建的任何抽象都可以这样说;您可以拥有一个读取和写入数据的接口(就像您引用的文章一样),您只需将抽象拉出来。

于 2012-12-03T20:32:57.797 回答
1

看看这个。我认为这个链接对你最有帮助

http://www.codeproject.com/Tips/572761/Generic-repository-pattern-using-EF-with-Dependenc

在此链接中,通用存储库模式与 MVC 项目中的依赖注入一起使用,而不使用代码优先方法。

于 2013-04-11T05:55:44.017 回答