使用linq时,外键为null(而不是)
本文关键字:null linq 使用 | 更新日期: 2023-09-27 18:28:21
我正在使用
var s=db.sModels.ToList().First(r=>r.Status==CustomStatus.Available);
以获取第一个可用项目。
然而,当提取时,s
中的外键原来是null
。
我已经连接到数据库,看到外键不是null
(而是1
)。
为什么会变成null
?
假设这是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);