C# 首先使用EF4代码创建存储库类的最佳实践是什么?

C# 首先使用EF4代码创建存储库类的最佳实践是什么?,c#,model-view-controller,asp.net-mvc-2,design-patterns,C#,Model View Controller,Asp.net Mvc 2,Design Patterns,似乎有很多方法可以应用存储库模式,这就是为什么我需要您的意见和一个关于应用存储库模式的最佳方法的清晰答案。它是通用存储库吗?但存在一个问题,即某些域对象的行为与其他域对象不同。它是指定存储库吗?那么存储库之间的代码重复呢?这是两个组合?对于这两种实现,使用di容器如何 谢谢 编辑:我使用的orm是实体框架4。最好有一个EF4的例子。在需要规范的领域,存储库模式本身非常明确。其余的都是故意忽略的,因为这取决于我的外部因素,比如你的编程语言、项目范围和你的个人编程风格 换句话说:您似乎在要求一个关于

似乎有很多方法可以应用存储库模式,这就是为什么我需要您的意见和一个关于应用存储库模式的最佳方法的清晰答案。它是通用存储库吗?但存在一个问题,即某些域对象的行为与其他域对象不同。它是指定存储库吗?那么存储库之间的代码重复呢?这是两个组合?对于这两种实现,使用di容器如何

谢谢


编辑:我使用的orm是实体框架4。最好有一个EF4的例子。

在需要规范的领域,存储库模式本身非常明确。其余的都是故意忽略的,因为这取决于我的外部因素,比如你的编程语言、项目范围和你的个人编程风格

换句话说:您似乎在要求一个关于如何应用该模式的模式,但最终您将不得不在编程时做出自己的决定

不过,我会尝试回答您更具体的问题:

  • 是的,对于存储库来说,使用泛型是个好主意。另一种方法是为所有应该存储的对象提供一个公共接口。根据您的需求,您也可以同时使用这两种方法
  • 尝试通过对要存储的对象调用多态方法来处理对象行为的差异
  • 如果做得正确(通过使用泛型和/或接口),就不应该有代码重复
      是对存储库模式的一个很好的解释。他用NHibernate实现了它(你不用说你正在使用哪个ORM),并提供了一个通用的基础存储库。对我来说,存储库模式与测试非常相关,能够伪造或模拟它,这篇博客文章还展示了如何制作自己的伪造

      根据我的经验,大多数存储库共享一些常见功能,例如GetById、Add、Remove。因此,拥有一个可以继承的基类是很有用的。当您开始考虑动态Linq查询以及如何测试这些查询时,它会变得更加棘手


      可以找到使用Linq的存储库模式的示例,但我会从简单的开始,因为对于某些项目来说,这些可能会有些过分。

      很好的解释,你有没有关于何时使用动态linq查询的例子?我添加了两个链接,展示了如何将linq与NHibernate一起使用。很抱歉,我刚刚意识到我没有提到我使用的orm,它是entity framework 4。你有EF4的例子吗对不起,从1.0版开始,你就没有用过EF。但是如果你用谷歌搜索一下,我相信你会找到几个EF4通用存储库的例子。