使用EF 4和存储库模式的对象查询模式

时间:2011-05-30 08:25:09

标签: entity-framework-4 repository-pattern objectquery

有关存储库模式和查询对象模式的问题。我正在使用EF 4,并使用VS 2010中的ADO.NET POCO实体生成器从我的数据库模型生成了我的POCO类.edmx文件和tt文件(POCO类)分为两个不同的项目。

我的存储库是特定于域的,例如DocumentRepository和UserRepository。我的数据库模型与我的域模型的不同之处在于我已经实现了映射器以便将域对象转换为一个或多个数据库表(反之亦然)。一个例子是我的Document域类被建模为数据库中的3个表(因此也就是POCO类)。

在这种情况下,如何在使用域对象时实现查询对象模式?我看到它的方式我将不得不基于POCO类而不是域类编写查询对象?但这不会破坏存储库模式吗?

1 个答案:

答案 0 :(得分:3)

ORM通常以与域对象直接相关的方式使用=它从数据库加载它们并将它们持久化到数据库。您正在执行一个抽象步骤,您只使用ORM实体来填充自定义对象。您的自定义对象完全超出了ORM工具的范围,您不能指望ORM工具会为您在域对象之上构建的查询提供任何支持。您必须构建自己的查询支持并将域查询转换为存储库中的ORM查询。这通常通过实现规范模式来完成。

顺便说一下。在这种情况下,POCO没有太多意义 - POCO适用于您希望将它们用作域对象的场景。