2011-07-11 69 views
0

我在我的一个项目中使用Entity Framework 4.1。实体模型应该在哪里?

该解决方案有7个项目,包括Model和Repository。由于我已经有了数据库,我正在使用数据库优先方法并创建POCO模型对象。

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

回答

1

这实际上取决于你对EF4.1有依赖性的地方。

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

编辑

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

当Scott Millett(或其他人)提出7个项目时,他/他们是否陈述了每个项目的用途?如果他们这样做了,至少应该给出部分答案:如果你想知道EF为你做什么(或者你打算如何使用它)来抵消每个项目的目的。

不明显的一点是业务逻辑存在的地方 - 我假设它是模型。关于业务逻辑的事情是你可能想要重复使用它。当你重新使用它时,很有可能重用的环境与现有环境不同。

危险在于那些不同的上下文可能有非常不同的技术约束 - 在这种情况下,您希望尽可能少地依赖;当你依赖某些东西(如EF)时,你也依赖于它的依赖。如果您的EF模型依赖于SQL(例如),那么您的逻辑与SQL绑定。

此外,自动生成可能是一个问题 - 如果你曾经决定你不需要自动生成的东西。个人而言,我可能倾向于制作自己的POCO来在层之间传递,并且纯粹在存储库中使用EF。

+0

我知道这样的东西没有绝对的答案。我计划在图层之间传递这些数据结构,所以我认为Model项目是最合适的。你怎么看? – mob1lejunkie

+0

你有什么其他层?您的解决方案有7个项目 - 是“业务”还是“逻辑”层? –

+0

我有控制器,基础设施,模型,存储库,服务,Services.Cache和UI.Web。我从Scott Millett的专业ASP.NET设计模式书中得到了这个设计。 – mob1lejunkie

相关问题