2011-04-13 86 views
0

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

有没有人有任何建议如何打破这种依赖? 例如,我有一个调用Repository的服务层,只要我决定使用。包括我绑定到胖和沉重的实体框架......我应该去.Join或EF可以以某种方式抽象?

+0

万一你没有见过这样:http://msdn.microsoft.com/en-us/library/dd456853.aspx – 2011-04-13 04:36:59

回答

1

朱莉·勒曼在她的博客中,她显示了IQueryable<T>一个包含扩展方法,它允许您使用包含在你的代码,而不是打断你的单元测试:

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

+0

奖金,我会去看看谢谢了.. W00t! – 2011-04-13 00:56:16

+0

呃,从ObjectContext到DbContext的更多转换:) – 2011-04-13 01:09:53

+0

糟糕,我原本以为这是一种针对'IObjectSet '的扩展方法,因为您使用的是代码优先的模型,所以我不得不放弃免责声明。当我看到它是'IQueryable '我兴奋地粘贴它而不看方法体! – 2011-04-13 01:14:05