打破对Entity Framework的依赖

时间:2011-04-13 00:47:30

标签: entity-framework c#-4.0 domain-driven-design

我有,我认为这是一个结构很好的项目,最后。在阅读Fowler的洋葱架构,学习Ninject for IOC / DI并调整我的Psuedo存储库类之后,我使用EF 4.1,因此DbSet和DbContext提供了大部分存储库;当我想在我的存储库中“包含”其他实体/相关实体时,我现在面临着对实体框架的恼人依赖。

有没有人对如何打破这种依赖有任何建议? 例如,我有一个服务层,当我决定使用时,我会立即调用Repository .Include我被绑定到胖而重的实体框架......我应该使用.Join还是以某种方式抽象EF?

1 个答案:

答案 0 :(得分:1)

Julie Lerman在她的博客上有一篇文章,她在IQueryable<T>上显示了一个Include扩展方法,它允许您在代码中使用Include而不会破坏您的单元测试:

public static class MyExtensions
{
  public static IQueryable<TSource> Include<TSource>
    (this IQueryable<TSource> source, string path)
  {
    var objectQuery = source as ObjectQuery<TSource>;
    if (objectQuery != null)
    {
      return objectQuery.Include(path);
    }
    return source;
  }
}

在这里查看她的完整博客文章:
Agile Entity Framework 4 Repository Part 5: IObjectSet and Include