简体   繁体   中英

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

I'm trying to do a LINQ statement using three database tables for my third dropdownlist. Below are my codes but I get an error (for my third dropdownlist) when I choose a cluster in the second dropdownlist.

    **//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);
        }
    }

Here's my error:

A specified Include path is not valid. The EntityType 'SAMPDBModel.EMPFILE' does not declare a navigation property with the name 'empno'.

and here's the SQL query (for my third dropdownlist):

    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

I need to do a cascading dropdownlist and I need to show the list of employees based on the selected sector and cluster. How can I do that using multiple tables? Please help me. Thanks in advance!

This should be an issue of not specifying the correct respective name that generated from EDMX. Please Can you check the "EMPFILE" Class that generated from Entity Framework It should have similar name with different case sensitive word.

When querying in SQL it does not bother with case sensitivity. But C# is case sensitive language.

And its better if you can post the "EMPFILE" class and database table here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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