无法读取相关数据 LINQ



我通过LINQ检索一组记录,其中包含一系列Include语句,然后是Where。这些记录存储在一个表中,即Solicitud de action表(我将其传递给视图),该表还有另外三个相关的表:analysis Causal、Plan de action &Evaluacion Efectividad .

Where语句请求当前登录用户的UserId (ResponsableId)。我要求所有有UserId作为负责任的Solicitud de action记录。小菜一碟,因为UserId是表中的一个字段,所以我要做的就是请求它。最重要的是,其他三个表——因果分析,行动计划;评估有效-具有相同的字段UserId (ResponsableId)。

我当前的LINQ表达式是:

var sacSolicitudAccion = 
  db.SacSolicitudAccion.Include(s => s.SacResponsables)
                       .Include(s => s.SacAnalisisCausal)
                       .Include(s => s.SacPlanesAccion)
                       .Include(s => s.SacEvalEfectividad)
                       .Where(s => s.SacResponsablesID == idUsuario);

现在是真正的问题。我需要显示当前登录的用户负责的每个征求意见的行动,以及用户负责分析原因、计划行动或评估有效性的每个征求意见的行动。

我该怎么做?

*重要:Solicitud de action与其他三个表有如下关系:

  • Solicitud de Accion有许多分析因果和分析因果有一个Solicitud de Accion)和ResponsableId (UserId)是每个表中的一个字段,所以它是相同的所有表。

最后我解决了这个问题。但是我不得不重新设计整个结构,以使用ViewModel方法。我走了很长的路,创建了三个相同类型的集合,SacSolicitudesAccion,但有不同的名称。类似这样的内容(在VM中):

public ICollection<SacSolicitudAccion> OverdueRequest { get; set; }
public ICollection<SacSolicitudAccion> OverdueRequestByActionPlan { get; set; }
public ICollection<SacSolicitudAccion> OverdueRequestByEfectiveness { get; set; }

我设置了一个保存所有记录的AsQueryable变量,你可能会认为它会带来一些性能问题,但不要低估LINQ和这个框架的力量,它非常快。通过

然后我读了每一个SacSolicitudAccion, SacPlanesAccion &以检查它们是否过期,并选择SacSolicitudAccion并将其绑定到各自的ViewModel语句。将ViewModel传递给视图需要在视图中进行一些更改,但非常简单,而不是foreach(Model中的var item),现在是foreach(Model. entity中的var item)。就这么简单。

棘手的部分是管理和重写过滤器,但这是另一个故事。

感谢大家的回答!问候!

.Where(s => s.SacResponsablesID == idusuario ||
            s.SacPlanesAccion.SacResponsablesID == idusuario ||
            s.SacEvalEffectividad.SacResponsablesID == iduario);

应该是你的Where条款的替代品,它能满足你的需求。请注意,您可能不需要所有这些包含,因为如果您的应用程序代码不使用它,并且上面的内容被转换为SQL,则不需要将数据点带过来。

相关内容

  • 没有找到相关文章