实体模型应该在哪里?

时间:2011-07-11 00:58:44

标签: .net architecture entity-framework-4

我在我的一个项目中使用Entity Framework 4.1。

该解决方案有7个项目,包括模型和存储库。由于我已经拥有数据库,因此我使用Database First方法并创建POCO模型对象。

我想知道实体模型和自动生成的实体类在模型项目或存储库项目中更有意义吗?

1 个答案:

答案 0 :(得分:1)

这实际上取决于你对依赖EF4.1感到满意的地方。

如果它纯粹是数据访问的东西 - 那么存储库。这是假设您的POCO故意清除不必要的依赖关系,并且它们是将在层之间传递的数据结构。

修改

所以,你需要考虑责任和依赖。

当Scott Millett(或其他任何人)想出7个项目时,他/他们说出了他们每个人的意图吗?如果他们这样做了,那么至少应该给出你的答案的一部分:如果你考虑EF为你做什么(或者你将要用它做什么)违背每个项目的目的。

有一件事并不是显而易见的是商业逻辑的存在 - 我假设它是模型。关于业务逻辑的事情是你可能想要重复使用它。当您重复使用它时,重用的上下文很可能与当前的上下文不同。

危险在于,那些不同的背景可能会有非常不同的技术限制 - 在这种情况下,您希望拥有最少量的依赖关系;当你依赖某些东西(比如EF)时,你还要依赖它所依赖的东西。如果您的EF模型依赖于SQL(例如),则您的逻辑与SQL绑定。

此外,自动生成可能是一个问题 - 如果您决定不需要自动生成某些内容。

就个人而言,我可能倾向于在层之间传递我自己的POCO,并且只在存储库中使用EF。