【问题标题】:Variable Includes in Linq to Sql EF statement变量包含在 Linq to Sql EF 语句中
【发布时间】:2014-12-12 21:32:02
【问题描述】:

是否可以在 EF Linq 查询中包含可变数量的 Includes?

目前我有类似的东西:

Form form = db.Forms.Where(m => m.Id == formId).Include("Child").First();

但是可以这样包装吗:

GetFormWithIncludes(int formId, string[] includes)
{
    Form form = db.Forms.Where(m => m.Id == formId).Include("Each").Include("String").Include("In").Include("includes").First();
}

这样includes 中的每个字符串参数都会被包含进来?

【问题讨论】:

  • 当你尝试这个时会发生什么?

标签: c# linq entity-framework asp.net-mvc-4


【解决方案1】:

我不明白为什么这样的事情行不通。

var query = db.Forms.Where(m => m.Id == formId);

foreach(string s in includes)
{
    query = query.Include(s);
}

Form form = query.First();

适用一般注意事项。如果包含数组中的字符串不是导航属性,EF 将抛出异常等。

【讨论】:

  • 嘿,谢谢你的想法! include 函数来自 DbQuery 对象而不是 IQueryable,所以我不得不对其进行一些更改。
【解决方案2】:
var entity = db.Forms;

foreach (string s in includes)
{
    entity.Include(s);
}

Form form = entity.Where(m => m.Id == id).First();

【讨论】:

  • 你为什么不把接受的答案给BradD呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2010-10-01
  • 2020-10-31
  • 1970-01-01
相关资源
最近更新 更多