【发布时间】:2011-07-08 12:58:10
【问题描述】:
我在 SQL Server 上使用 VS2008 (.NET 3.5) 和实体框架。我希望在不使用Include() 方法链接表的情况下获取外键列的值。
例如,简单的 Author 有很多 Books 示例。
var book = context.Books.First();
int authorId = book.Author.AuthorId;
在这种情况下,会引发异常,因为 Author 为 null。我只想获取作者 ID,但不需要 Author 对象的其余部分。 Book 类上没有 AuthorId 属性。
我确信有办法做到这一点,可能是直接编辑 EDMX,也可能是通过设计器 - 有什么开始的想法吗?
谢谢
【问题讨论】:
-
我很惊讶图书实体中没有 AuthorID。你有在数据库中定义的外键吗?如果是这样,EF 模型生成器应该会选择它。
-
EF4 可以在不暴露外键属性的情况下创建实体链接。优点:实体对象更干净。相反:您无法轻松访问外键值
-
如果我记得的话,EF4 包括 AuthorId,但 EF1(这就是我所使用的)没有。我只有 Author 属性,仅当您在对象集上调用 .Include("Author") 时才会填充该属性。
标签: .net entity-framework foreign-keys