为什么错误'转换为值类型' System.Int32'失败,因为具体化值为null'使用Include时

时间:2015-09-30 18:20:44

标签: linq-to-entities entity-framework-6

我在代码第一个Entity Framework 6.1.3应用程序中有以下POCO实体:

public class JobTitle
  {
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual int JobTitleId { get; set; }
    public virtual string Description { get; set; }
    public virtual string ShortDescription { get; set; }
    public virtual int? PostId { get; set; }
    [ForeignKey("PostId")]
    public virtual Post Post { get; set; }
  }

实体配置如下:

  public class JobTitleConfiguration : EntityTypeConfiguration<JobTitle>
  {
    public JobTitleConfiguration()
    {
      Property(j => j.PostId).HasColumnName("Post_PostId");
      HasOptional(j => j.Post);
    }
  }

如果存在没有关联帖子的JobTitles,则以下查询会给出空值错误:

var list=JobTitles.Include(j=>j.Post).ToList();

我不明白为什么,因为外键可以为空并在配置中指定为可选。

如何急切加载帖子信息,但仍然可以避免此错误?

1 个答案:

答案 0 :(得分:0)

要检查的一些事项:

  • Post类中的PostId属性是否也可以为空?
  • 数据库中的“JobTitleId”是否有空值?