繁体   English   中英

实体框架获取外键

[英]Entity framework get the foreign key

我与数据库中的表之间具有1:n的关系:Employee(1):角色(n)角色具有名为idEmployee的ForeignKey

我想创建一个linq语句,它将获得给定客户的每个角色。 我想做这样的事情:

var myQuery = from r in Role 
              where r.idEmployee == someId
              select r;

但是,r没有idEmployee属性! 我怎样才能获得外键的值?

如果您使用的是EF 4.0(.NET 4.0)和带有EDMX模型的数据库优先编程模型(可视化设计器),那么您需要确保Include foreign key columns in the model添加时选中Include foreign key columns in the model的选项EDMX模型的表格:

在此输入图像描述

如果你没有这个选项被选中,那么EF 4.0的行为一样EF 1.0 / 3.5(在.net 3.5),这是包括导航属性-但不是外键列作为一个单独的列。

如果至少使用EF4.0 ,这将为您提供所需的信息: Entity Framework中的外键

如果您使用的是EF1.0 ,则问题将更加严重,因为它不会在模型中显示外键。 您需要遍历EntityKey.EntityKeyValues集合以搜索有效值。 但是我认为这只会为您带来外键的价值,并且在查询中不起作用(因为EF不知道如何将其转换为SQL查询)。

但是既然你有外键,为什么不简单地使用NavigationProperty导航到Employee实体并检查那里的值?

var myQuery = from r in Role 
              where r.Employee.idEmployee == someId
              select r;

在Employee类上使用include方法可以带回所有相关角色:

var myQuery = from e in Employees.Include(emp => emp.Roles)
              where e.EmployeeId == someId
              select e

暂无
暂无

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

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