【问题标题】:ASP.NET Entity Framework request SQLASP.NET 实体框架请求 SQL
【发布时间】:2020-06-10 12:34:45
【问题描述】:

我需要在 Entity Framework 中编写这个 SQL 语句:

SELECT 
    SALARIE.MATRICULE, LIEU, UO, UO_RATTACHEMENT, 
    PHOTO.PHOTO, SALARIE.NOM, SALARIE.PRENOM
FROM 
    SALARIE, UNITE_ORG, PHOTO
WHERE
    SALARIE.LIEU = UNITE_ORG.UO

我使用这种方法来读取我的数据:

public JsonResult Read()
{
    var nodes = entities.UNITE_ORG.Select(p => new NodeModel { id = p.UO, pid = p.UO_RATTACHEMENT, poste = p.POSTE, img=p.LIB_COMPLET, Fullname=p.RESPONSABLE });
    return Json(new { nodes = nodes }, JsonRequestBehavior.AllowGet);
}

我需要更改此节点声明。

谢谢

【问题讨论】:

  • 所以您只是想要您发布的 SQL 的 EF 等效版本?
  • 如果是这样,我假设SALARIE, UNITE_ORG, PHOTO 这些是表,我们需要知道表结构才能加入它们。另外,我强烈建议您停止这样做,因为您不仅可能在返回类型中有不明确的列,这会导致错误,而且您应该改用 cross join
  • SALARIE 是一个视图,而 UNITE_ORG、PHOTO 这些是表格

标签: asp.net sql-server asp.net-mvc entity-framework entity-framework-6


【解决方案1】:

我相信等效的实体框架如下:

var result = (from s in context.SALARIE
              from u in context.UNITE_ORG
              from p in context.PHOTO
              where s.LIEU == u.UO
              select new {
                             MATRICULE = s.MATRICULE,
                             LIEU = s.LIEU,
                             UO = u.UO,
                             UO_RATTACHEMENT = UO_RATTACHEMENT,    // I don't know where this is coming from
                             PHOTO = p.PHOTO,
                             NOM = s.NOM,
                             PRENOM = s.PRENOM
                         }
             );

但是,这只是您提供的信息的猜测。

另外,就像我在评论中所说的那样,我真的认为您应该停止使用您正在使用的 cross joins 语法(, 分隔语法)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2011-09-28
    相关资源
    最近更新 更多