[英]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.