实体框架模型第一个存储库混乱

时间:2011-12-19 22:27:03

标签: asp.net-mvc-3 entity-framework-4.1 domain-driven-design repository-pattern

我不确定存储库模式是否是我所见过的最常见的事情,或者它是否是在数据库和控制器之间抽象层的最佳实践。今天找到了一些很好的资源来解释持久性无知以及为什么它对单元测试有好处。但是,我仍然不清楚正确的实体框架实现。

我目前的项目,我首先要创建模型。我可以肯定地说我的根源是:

  • 商业
  • 用户
  • 活动
  • 发票

这些根源相当丰富,在模型中引用了“查找实体”。也就是说我的模型包含20个奇怪的实体,其中一些主要用于查找目的。如果我要实现存储库模式,

  1. 我是否需要为每个实体创建一个POCO?
  2. 我是否曾将自动生成的EF类/ entites作为存储库的属性引用?
  3. 在与实体框架交互时,我是否总是需要使用存储库?

2 个答案:

答案 0 :(得分:0)

  1. 我是否需要为每个实体创建一个POCO? 您的模型中的大多数实体都应该有一个普通的旧CLR对象。您还应该为每个复杂类型(ddd中的值对象)设置POCO。您可能不想要实体的POCO的情况是为m..n关系创建动名词类型。您可以在EF 4.1中为这些创建POCO,但您不必这样做。

  2. 我是否曾将自动生成的EF类/ entites作为存储库的属性引用? 我首先在EF 4.1代码中知道的唯一自动生成的EF类/实体是在运行时创建的动态代理,用于填充导航和集合属性。您不能也不应该尝试在任何源代码中引用这些内容。哦,我认为你可能会混淆“属性”一词。属性是可用于装饰类和方法的特殊类。在这个意义上,实体类不能用作属性。

  3. 在与实体框架交互时,我是否总是需要使用存储库? 否。实际上很多人都说在你发现需要存储库之前不应该创建存储库。但是如果你从单元测试中推动开发,你会发现需要快速存储库接口。

答案 1 :(得分:-1)

在Entity Framework中,您的DataContext类一个存储库,并且您可以使用EF 4.1对其进行大量控制。我绝对没有意思轻浮,因为这是一个非常好的问题,有很多不好的答案。

使用EF时,您已经在使用存储库模式。利用它并编写更少的代码。抵制过度建筑师的冲动。

1)这取决于您的行为模型(您的对象)如何转换为您的数据模型(您的数据库)。确实没有规定性指导。

2)如果按属性表示属性,EF已经这样做了。

3)你已经做到了。 : - )

斯蒂芬

相关问题