Sql 如何在mVC中通过发送主键获取外键?

Sql 如何在mVC中通过发送主键获取外键?,sql,model-view-controller,Sql,Model View Controller,我在MVC中从事一个小型项目,在这个项目中我执行CRUD操作。 我有三张桌子: 员工:PK:EmpID 工资:Fk:EmpID 图片:Fk:EmpID 我在两个html页面之间导航,并将PK从one.html传递到two.html。 我想访问two.html上的Salary和Images表的数据,我有Employee表的主键,其余两个表的主键是外键 我想读取附加到EmpID的所有数据,这些数据在工资和图像表中被视为FK。 EmpID在Employee表(PK)中只有一行 EmpID在薪资和图像表

我在MVC中从事一个小型项目,在这个项目中我执行CRUD操作。 我有三张桌子: 员工:PK:EmpID 工资:Fk:EmpID 图片:Fk:EmpID 我在两个html页面之间导航,并将PK从one.html传递到two.html。 我想访问two.html上的Salary和Images表的数据,我有Employee表的主键,其余两个表的主键是外键

我想读取附加到EmpID的所有数据,这些数据在工资和图像表中被视为FK。 EmpID在Employee表(PK)中只有一行 EmpID在薪资和图像表(FK)中有多行

先谢谢你

var employeeImages = _dbContext.Images.Where(i => i.EmpID == 21).ToList();
其中
21
是您在操作方法中收到的员工id参数

类似地,您可以查询薪资,如:

var employeeSalaries = _dbContext.Salaries.Where(i => i.EmpID == 21).ToList();
或者在同一个调用中同时调用两个对象:

var employee = _dbContext.Employee.Where(e => e.Id == 21).Include(e => e.Images).Include(e => e.Salaries).ToList();
如果您正在处理生产应用程序,直接从控制器调用
DbContext
不是一个好主意。你可能还想看看


另外,在控制器层工作时,不要考虑FKs和PKs。这些只是领域模型。从标识符的角度考虑这些问题。FK和PKs只有在我们达到数据库级别(至少不应该是控制器)后才会进入游戏。

为此,您需要学习
加入
。这里有一个链接:-我创建了满足PK和FKOP所有条件的表。您不认为OP需要为此学习
JOIN
。这里有一个链接:-可能是这样的:)但上面提到OP在从1.html到2.html的导航中遇到了问题。我正在URL中传递一个ID并连接到控制器,工作正常。但21是工资表的主键,我希望21应该被视为工资表的FK,这样我就可以从数据库中获得10-12行。我仍然不明白你们的问题是什么。我想我可能不得不同意@AlivetoDie,您需要稍微了解一下SQL。在SQL中,您始终可以应用诸如SELECT*FROM SALARY之类的过滤器,其中EmpID=WhateVerEmployeeIDoureceive。但是,如果希望在一次调用中获取所有数据,则可能需要查看联接。我不能完全确定您在这里的问题,但它应该是一个左连接(Employee-Salary-Image)。我从two.html调用工资表的控制器,它有一个URL“api/SpecificationDetails/ID”,其中ID是工资表的PK,但我发送给控制器的值是工资表的FK。我正在寻找控制器的C#代码,在这里我可以将员工表的PK作为FK传递给工资和图像表