我有,我认为这是一个结构很好的项目,最后。在阅读Fowler的洋葱架构,学习Ninject for IOC / DI并调整我的Psuedo存储库类之后,我使用EF 4.1,因此DbSet和DbContext提供了大部分存储库;当我想在我的存储库中“包含”其他实体/相关实体时,我现在面临着对实体框架的恼人依赖。
有没有人对如何打破这种依赖有任何建议? 例如,我有一个服务层,当我决定使用时,我会立即调用Repository .Include我被绑定到胖而重的实体框架......我应该使用.Join还是以某种方式抽象EF?
答案 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