我有一个通用存储库,但在使用 Include 扩展方法时遇到了一些问题。我的存储库如下所示:
public class Repository<TEntity> : IRepository<TEntity> {
private IDbSet<TEntity> _entitySet;
/*
some init code
*/
public TEntity GetByKey(params object[] keys) {
return _entitySet.Find(keys);
}
/*
more db query methods
*/
public IRepository<TEntity> Include(Expression<Func<TEntity, object>> selector) {
_entitySet = _entitySet.Include(selector) as IDbSet<TEntity>;
return this;
}
}
这应该被称为这样的东西:
var blogRepository = new Repository<Blog>();
var blogEntry = blogRepository
.Include(b => b.Posts)
.Include(b => b.Someothercollection)
.GetByKey(1);
这里的问题是,当我将存储库中包含的返回值转换为 IDbSet<> 时,我总是得到空值。我一定做错了什么,但我不确定是什么。有任何想法吗?
谢谢