gpt4 book ai didi

c# - 多个包括使用 Entity Framework 和存储库模式

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:16 26 4
gpt4 key购买 nike

我正在使用 Entity Framework 和存储库模式进行所有数据访问,当使用表导航时,我注意到当我获得第一个对象并引用导航对象中的字段时正在运行 2 个查询。由于我在数据库中有很多关系,将这种技术用于我的导航属性可能会导致性能开销。

我查看了 Include(string tableName)方法,这将非常有效(如果我没有使用通用 RP),但这只需要一个表名。我已经成功地在我的存储库模式中复制了这一点,方法是从 classs 更改我的位置。至EntityObject但是如何使用存储库模式在一个查询中包含多个包含?

这是我的代码:

public class GenericRepository<T> : IRepository<T> where T : EntityObject, new()
{
private Entities _Context;
private ObjectSet<T> _ObjectSet;

public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, string include)
{
// This works OK
return this._ObjectSet.Include(include).Where(predicate);
}

public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, param string[] include)
{
// This will not work but is what I am trying to do
return this._ObjectSet.Include(include).Where(predicate);
}
}

最佳答案

您可以链接您的包含:

public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, param string[] include)
{
IQueryable<T> query = this._ObjectSet;
foreach(string inc in include)
{
query = query.Include(inc);
}

return query.Where(predicate);
}

关于c# - 多个包括使用 Entity Framework 和存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com