调用动态。包含列表

时间:2015-02-06 16:11:42

标签: asp.net asp.net-mvc entity-framework asp.net-mvc-5

我正在开发一个asp.net mvc Web应用程序。我有以下存储库方法,其中我将动态传递.Include(): -

   public async Task<SecurityRole> FindSecurityRole(int id,string path="")
              {
                  return await context.SecurityRoles.Include(path).SingleOrDefaultAsync(a2 => a2.SecurityRoleID == id);
}

现在在我的控制器中我想调用上面的方法如下: -

await uniteofwork.SecurityRoleRepository.FindSecurityRole(id.Value,)

但我不确定通过这些属性我可以遵循的附件是什么? 感谢

1 个答案:

答案 0 :(得分:1)

通过将结果存储在变量中,您可以将调用链接到Include之类的多行。在此处调用SingleOrDefaultAsync之类的评估表达式之前,实际上没有任何内容会打到您的数据库。

var query = context.SecurityRoles;
foreach (var include in path.Split(',', StringSplitOptions.RemoveEmptyEntries))
{
    query = query.Include(include);
}

return await query.SingleOrDefaultAsync(a2 => a2.SecurityRoleID == id);

拆分字符串允许您一次传递多个包含层次结构,逗号分隔。