将实体框架实体集合从DAL传递到业务层的最佳方法是什么?

时间:2009-01-30 16:23:02

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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