繁体   English   中英

如何在ASP.Net MVC中使用内部联接对SQL查询进行编程?

[英]How to program sql query with inner join in ASP.Net MVC?

我正在尝试使用第三个下拉列表的三个数据库表来执行LINQ语句。 下面是我的代码,但是当我在第二个下拉列表中选择一个集群时,我得到了一个错误(第三个下拉列表)。

    **//SECTORS**
    public JsonResult GetSectors()
    {
        using (SAMPDBEntities context = new SAMPDBEntities())
        {
            var ret = context.SECLIBs
                .Select(x => new { x.seccd, x.unitacro }).ToList();
            return Json(ret, JsonRequestBehavior.AllowGet);
        }
    }

    **//CLUSTERS**
    public JsonResult GetCluster(string seccd)
    {
        using (SAMPDBEntities context = new SAMPDBEntities())
        {
            var ret = context.CLUSLIBs
                .Where(x => x.seccd.Contains(seccd))
                .Select(x => new { x.cluscd, x.unitdesc }).ToList();
            return Json(ret, JsonRequestBehavior.AllowGet);
        }
    }

    **//EMPLOYEES**
    public JsonResult GetEmployee(string cluscd)
    {
        using (SAMPDBEntities context = new SAMPDBEntities())
        {
            var ret = context.UNILIBs
                .Where(a => a.cluscd.Contains(cluscd))
                .Include(x => x.PPSAs.Select(y => y.EMPFILE.empno))
                .ToList();

            return Json(ret, JsonRequestBehavior.AllowGet);
        }
    }

这是我的错误:

指定的包含路径无效。 EntityType'SAMPDBModel.EMPFILE'未声明名称为'empno'的导航属性。

这是SQL查询(针对我的第三个下拉列表):

    SELECT DISTINCT e.empno, e.lname, e.fname, e.mname, c.cluscd
    FROM SECLIB a
    INNER JOIN CLUSLIB b
    ON a.seccd = b.seccd
    INNER JOIN UNILIB c
    ON b.cluscd = c.cluscd
    INNER JOIN PPSA d
    ON c.unitcode = d.unitcd
    INNER JOIN EMPFILE e
    ON d.empno = e.empno
    WHERE e.empstat = 1 AND c.cluscd = @cluscd

我需要进行级联下拉列表,并需要根据所选部门和集群显示员工列表。 我该如何使用多个表呢? 请帮我。 提前致谢!

这可能是未指定从EDMX生成的正确的相应名称的问题。 请检查由Entity Framework生成的“ EMPFILE”类吗?它应该具有相似的名称,但区分大小写。

在SQL中查询时,不区分大小写。 但是C#是区分大小写的语言。

如果可以在此处发布“ EMPFILE”类和数据库表,则更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM