我正在尝试围绕我的ASP.NET MVC应用程序的存储库模式和依赖注入概念。
我浏览了文章Repository Pattern with Entity Framework,并且非常喜欢代码的简单性。似乎没有那么多代码,而且它们都是完全通用的。也就是说,数据库中的不同对象不需要多个存储库,因为大多数人似乎都在这样做。这正是我想要的。
但是,代码是为代码编写的,我不打算使用它。
问题:
答案 0 :(得分:3)
您可以为任何底层数据存储创建存储库接口。你可以简单地定义一个这样的界面:
public interface IRepository
{
IQueryable<T> GetQueryable<T>();
void Insert<T>(T item);
}
然后,您可以在其后面实现一个实现它的类。它不必是代码优先的;例如,您可以使用从EDMX文件创建的ObjectContext
来支持它。
这里的关键是创建正确的抽象。您可以使用界面轻松完成此操作,然后在幕后实现它。
因为您正在使用依赖注入,所以实现并不重要,只要您正确定义契约,实现(及其测试)应该很简单。如果它不起作用,或者你想要一个完全不同的数据存储,你只需告诉你的依赖注入器使用不同的实现,合同不会改变。
对于您创建的任何抽象,都可以这样说;你可以有一个读写数据的界面(就像你引用的文章那样),你只需要抽出抽象。
答案 1 :(得分:1)
看看这个。我认为这个链接对你有帮助
http://www.codeproject.com/Tips/572761/Generic-repository-pattern-using-EF-with-Dependenc
在此链接中,通用存储库模式与MVC项目中的依赖项注入一起使用,而不使用代码优先方法。