这涉及具有非常通用的数据库的企业应用程序(所有对象都使用数据库中的数据进行标识并国际化/全球化/本地化)。

  • 为存储库模式创建一个模型,然后为数据库访问创建(生成 1:1)另一个模型(LINQ2SQL 或 EF)并使用后者作为存储库模型数据访问层?
  • 直接使用L2S/EF/NHibernate模型,将模型映射到DB并打开持久层?

当直接在双模型环境中使用 L2S/EF 模型时,这种双模型思想(存储库模式)弹出问题是否会使动态可堆栈 LINQ 搜索查询成为可能?

请指教。

有帮助吗?

解决方案

只要您在存储库中公开 IQueryable 对象,就可以按照您建议的方式堆叠查询。

我对此使用实体框架会持谨慎态度,因为延迟加载不受您期望的方式支持。Linq to SQL 将毫无问题地处理延迟加载。

有关实体框架中延迟加载的更多信息,请参阅:
http://www.singingeels.com/Articles/Entity_Framework_and_Lazy_Loading.aspx

其他提示

看一眼 尖锐的建筑.

关于从存储库对象返回 IQueryable,我认为这样做会模糊应用程序中适当的关注点分离。我完全支持在数据访问层中使用 IQueryable,但是一旦您开始将对象作为 IQueryable 返回,您就为控制器和/或视图提供了开始干预数据访问的机会。这甚至可能会对应用程序的可测试性产生负面影响。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top