实体框架ModelBuilder多个连接/子查询

时间:2015-04-21 09:29:13

标签: sql sql-server entity-framework join ef-model-builder

我一直在研究如何使用多个连接(或子查询)将实体属性映射到另一个表中的列,但我真的很难找到从哪里开始。

我创建了一个SQL小提琴,演示了我想要做的事情。 User实体应包含名为Employee的属性,该属性从employee表

中选择名称
SET @uid = 2;

SELECT Employee.Name 
FROM Employee
JOIN Company ON Employee.CompanyId = Company.Id
WHERE Company.CompanyNo = (SELECT UserEmployee.CompanyNo 
                           FROM UserEmployee
                           JOIN User ON UserEmployee.UserId = User.Id 
                                     AND User.Id = @uid)
  AND Employee.EmployeeNo = (SELECT UserEmployee.EmployeeNo 
                             FROM UserEmployee
                             JOIN User ON UserEmployee.UserId = User.Id 
                                       AND User.Id = @uid)

http://sqlfiddle.com/#!9/cbac3/2

基本上,User记录使用关系表(Employee)与UserEmployee相关联,但这是1-0的关系。

我们没有使用ID作为外键,而是每个Employee都有一个EmployeeNo,并与Company有一个1-1关系,它有自己的CompanyNo,因此UserEmployee表的复合外键由Employee和Company Numbers组成。

我无法直接在UserEmployee表中链接到EmployeeId,因为实际的系统员工记录是重复的(出于历史记录的原因),并且混合中添加了第三个表。

谢谢

0 个答案:

没有答案