【发布时间】:2013-05-13 19:08:34
【问题描述】:
我有一个名为 Driver 的实体,为了获取 Drivers 列表,我调用:
List<Driver> drivers = _context.Drivers.Select(x=>x);
驱动程序可以有详细信息,它们是它们之间的外键,但我不能这样做:
List<Driver> drivers = _context.Where(x=>x.id == id && x.Detail.id == detailId);
如何在 Where 子句中访问我的外键属性?
我正在使用Entity Framework 3.5。
该语句有效,虽然我不确定 (x=>x) 是否必要,但我还没有实际编译它:
List<Driver> drivers = _context.Drivers.Select(x=>x);
问题是Driver 实体与Detail 有外关系,Driver 有一个DetailId 列,它是 Detail 表的外键,因为我使用的是 Entity Framework 3.5,所以我可以不能到达Driver.Detail.Id 或Driver.DetailId。他们不上来。我确实读过一些关于EF 3.5 的内容,不包括外键,然后可以在EF 4 中进行选择,但我现在在EF 3.5 上。
我确实尝试过.Include("Detail"),但它给了我一些关于Detail not being a navigation property.的例外
【问题讨论】:
-
我不明白这个问题。它不让你做什么?你的代码目前给你什么错误?
-
你的第二个 Linq 语句有什么问题?
-
你能展示你的Driver类吗?
-
那(你的第二行)实际上创建了正确的 SQL - 使用 EF 最直观的通常是正确的方法。你一定有其他东西不起作用。
-
@NSGaga - 我添加了一些细节。
标签: c# linq entity-framework