让我说,我得出的结论(经过大量试验)使用 Entity Framework 时的存储库和工作单元是错误的,错误的,错误的和 this says why很好。
但我真的很讨厌那些嵌入式查询。问题是,如果我反对存储库等,我可以把它们放在哪里? (请提供干净的答案,非常感谢示例)。
我刚刚删除了两个项目,其中包含我的存储库、工作单元和与数百个文件的接口(interface),因为无处可寻。我认为很多人,包括我自己,只是加入了 Repository 的潮流,因为这是其他人都在做的事情,但回想起来,我认为这真的是一趟无路可走。
/叹
理查德
最佳答案
你希望把它们放在哪里?你只有几个选择:
IQueryable
并且不能接受Expression
as parameter = 整个查询逻辑必须包含在方法中。但这将使您的类(class)涵盖相关方法,就像存储库一样(唯一可以模拟或伪造的方法)。此实现接近于存储过程使用的实现。 自定义扩展方法示例:
public static IQueryable<TEntity> GetByName(this IQueryalbe<TEntity> query, string name)
where TEntity : IEntityWithName
{
return query.Where(e => e.Name == name);
}
自定义类公开方法的示例:
public class QueryProvider
{
public QueryProvider() {}
public IEnumerable<TEntity> GetByName(IYourContext context, string name)
where TEntity : IEntityWithName
{
return context.CreateObjectSet<TEntity>().Where(e => e.Name == name).ToList();
}
}
关于entity-framework - 在没有存储库的 Entity Framework 中可重用查询。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6950433/