【发布时间】:2012-08-08 01:23:26
【问题描述】:
我是 Entity Framework 的新手,我想了解一些关于 EF、LINQ、POCO 和存储库的观点。
我们有一个有效的解决方案,其中包含一个使用 EF 和 POCO 访问数据库的存储库。我们通过上下文在 LINQ 中进行所有查询。我们将映射添加到映射类中,这些映射类在应用程序启动时加载,因为数据库/表已经存在。
如果我有一个商业案例,我需要为特定公司计算员工为孩子购买的玩具数量。
我将如何构建存储库?
A:用一个存储库调用公司的所有员工,然后在服务层再次为每个员工的孩子调用另一个存储库,等等?
B:调用一个存储库,它会将公司连同所有员工、孩子和玩具归还给我?
在我看来,A 看起来更干净,我可以更频繁地重用存储库。但是 B 接缝更有效,但不能重复使用。更少的存储库和查询会变得越来越大。
这只是一个小例子……但我们有更大的业务案例。在这种情况下,最好的架构方法是什么?
class Company
{
List<Employee> employees;
}
class Employee
{
List<Child> children;
}
class Child
{
List<Toy> toys;
}
【问题讨论】:
-
为什么需要存储库?你不能直接使用你的ORM吗?所有这些担忧都会立即消失。
-
我们添加了 Repo 以将 DBaccess / ORM 与业务逻辑分开。
-
ORM是已经分离了。
-
是的,但是如果我们想从 EF 切换到 nHibernate 怎么办?
-
你不会的。您的应用程序以许多微妙的方式依赖于 EF。你只是没有意识到。此外,您不需要同时使用它们。
标签: entity-framework architecture repository repository-pattern poco