如何在一个MVC应用程序中完全结合EntityFramework,Repository,UnitOfWork和Automapper?

首先,我决定创建一个名为IDataAccessLayer接口,并开始将所有内容放入其中: GetUsers()GetUser(int id)GetOrderByNumber(int number)DeleteOrder(int Id)等方法。

起初工作刚刚完美。 但后来我意识到DataLayer:IDataLayer的具体实现DataLayer:IDataLayer正在发展壮大。 我决定把它切成几个部分类文件。 我仍然觉得我做错了什么。

然后我决定为每个逻辑部分创建接口,如IUsersIOrdersIItems等。没有用,因为我通过注入控制器构造函数的一个依赖属性访问存储库。 所以每次我需要在我的控制器中使用不同类型的dataContext时,我不能只添加另一个属性。

然后经过几个小时阅读有关entity framework的文章后,我终于意识到我必须使用RepositoryUnit of work模式。 而且我仍然需要以某种方式将POCO与我的ViewModel对象分开,尽管他们几乎总是分享相似之处。 Automapper有很多帮助。 但是现在,我不确定如何一起使用所有东西。 entity framework,模式,自动映射和dependency injection框架,如Ninject。

我不清楚如何将所有内容混合到一个很棒的架构中。 你能告诉我一些很好的例子。

首先是关于使用Repository和UnitOfWork原则的n层架构的整篇文章: 链接 。 我有一些使用EF和前面提到的模式的经验,我发现这篇文章很有帮助。

看看这里以及这些关于这些原则的MSDN文章。

问候。

您可以看看我几个月前写的这个样本(MVCArch) 。 它利用了以下优势:

  • entity framework
  • 存储库和工作单元模式
  • Automapper
  • Ninject
  • 等等…

希望这可以帮助。

你经历过这些教程吗?