我正在使用
var s = db.sModels.ToList().First(r => r.Status == CustomStatus.Available);
获取第一个可用项目。
但是,在提取时,s
中的外键变为null
。
我已连接到数据库并发现外键不是null
(但是1
)。
为什么会变成null
?
答案 0 :(得分:4)
假设这是Linq to Entities - 这是默认行为 - 如果你想实现相关实体 - 让我们说SomeEntity
你可以使用Include
查询,在这种情况下,FK和实体将填充:
var s = db.sModels.Include(r=> r.SomeEntity)
.First(r => r.Status == CustomStatus.Available);
对于没有使用Include查询来检索FK的解决方法,请参阅此博文:"Getting Foreign Key Values with Linq-to-Entities"
正如对Linq to Entities目前不支持枚举的问题的评论所述,因此上面实际上不会按原样运作。作为一种解决方法(直到EF 5),您现在可以在DB上使用整数:
int statusAvailable = (int) CustomStatus.Available;
var s = db.sModels.Include(r=> r.SomeEntity)
.First(r => r.Status == statusAvailable);