【问题标题】:Best way to pass Entity Framework entity collections from the DAL to the Business Layer?将实体框架实体集合从 DAL 传递到业务层的最佳方式?
【发布时间】:2009-01-30 16:23:01
【问题描述】:

我有一个调用我的实体框架模型的 DAL。这些调用返回诸如 IOrderedQueryable 和 IQueryable 对象之类的东西。我应该将它们转换为我的 DAL 中更通用的东西,例如 List 吗?但我假设如果我不需要枚举整个集合,这可能是浪费......那么最好的方法是什么?只需让 DAL 返回 IQueryable 并在需要时转换它?还是有其他更灵活的东西? 提前致谢。

【问题讨论】:

    标签: entity-framework generics collections object data-access-layer


    【解决方案1】:

    我有同样的问题,但我不确定完美的答案是什么。我觉得让 DAL 返回 IQueryable 实际上是最灵活的,因为您可以轻松地在代码的另一层执行另一个 LINQ 查询(如果需要)。

    要考虑的另一件事是,当返回 IQueryable 时,结果尚未加载到内存中。所以返回的实际上是 LINQ“查询”。因此,它的行为与人们可能习惯的行为略有不同,即从模型返回的东西实际上是来自数据库的结果。

    在我的情况下,我们从 DAL 返回列表(通过调用 IQueryable.ToList() 创建)。如果此列表需要过滤,那么我们将创建另一个 DAL 方法,该方法将返回过滤后的列表。我们选择这个是因为调用 DAL 的其他层不需要知道我们以这种方式使用实体框架(没有引入依赖项)。

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 2015-11-28
      • 2012-04-26
      • 2012-03-08
      • 2014-04-20
      • 2014-08-02
      • 2013-02-21
      • 1970-01-01
      • 2011-10-07
      相关资源
      最近更新 更多