我究竟做错了什么?我使用向导映射了一个 SQL 服务器数据库。这是一个相当复杂的数据库,但对于这个示例,我们可以假设三个表:REPORTROWS、REPORTCOLUMNS 和 REPORTNAMES。REPORTROWS 具有以下列 ID、RESULT、REPORTDATE、REPORTCOLUMNID、REPORTNAMEID。REPORTNAMES 和 REPORTCOLUMNS 是带有 ID 和 NAME 的非常简单的表。ID 始终是主键,REPORTCOLUMNSID 和 REPORTNAMESID 是将 REPORTROWS 与 REPORTCOLUMNS 和 REPORTNAMES 链接的外键。
现在我用有效值填充三个表(我没有违反任何外键约束)。当我调用以下代码时
var recs = from a in ctx.REPORTROWS
where a.REPORTNAMES.NAME == "my report" && a.REPORTDATE == somedate select a;
我得到了我想要的行,但是我不能在后面的代码中使用字段 a.REPORTCOLUMNS 因为它是空的!为什么?REPORTCOLUMNID 被定义为一个不可为空的整数(这就是它是外键的原因)。但是,字段 a.REPORTNAMES 是正确的。即使我添加&& a.REPORTCOLUMNS != null
到查询中,a.REPORTDATE 仍然为空。
我已经看到了类似问题的链接,但我找不到明确的答案。任何人都可以帮助我。供您参考,我使用的是 .NET Framework 3.5,在映射数据库时无法检查向导中的“包含外键”。它是灰色的(我仍然不明白为什么)。
非常感谢提前
这是EF版本v2.0.50727