返回包含实体框架代码的子对象的第一个错误:无法计算表达式.不支持操作.未知错误:0x80070057

本文关键字:错误 表达式 计算 不支持 操作 0x80070057 未知 包含 实体 代码 对象 | 更新日期: 2023-09-27 18:31:27

我不断收到以下错误

无法计算表达式。不支持操作。未知 错误:0x80070057

尝试返回父对象及其子对象时。

我所知,数据库构建、播种并正确定义了所有关系。我构建了一个较小的模型,只是为了测试和展示问题:

父对象:

public class Person
{
    [Key]
    [Column(Order = 1)]
    public int Id { get; set; }      
    [StringLength(100)]    
    public string Name { get; set; }
    public DateTime DateModified { get; set; }
    public DateTime DateCreated { get; set; }
    public virtual ICollection<Job> Jobs { get; set; }
}

子对象:

public class Job
{
    [Key]
    [Column(Order = 1)]
    public int Id { get; set; }
    [StringLength(100)]
    public string Name { get; set; }    
    public int PersonId { get; set; }
    [ForeignKey("PersonId")]
    public virtual Person Person { get; set; }
}

返回_context.Person有效并返回具有空作业的人员列表

返回_context.Person.Include(o => o.Jobs)会引发上述错误。

我知道这是简单的东西,只有两个非常简单的表格,但我看不出问题出在哪里,因为我已经无数次创建这个模型senario没有问题。我正在考虑重建项目和 EF 依赖项,但更愿意了解此问题并在可能的情况下修复它。

返回包含实体框架代码的子对象的第一个错误:无法计算表达式.不支持操作.未知错误:0x80070057

经过一些相当大的头发拉扯,以下克服了这个问题:

_context的存储库方法:

  public IQueryable<Person> GetPeople()
    {
        return _context.Person.Include(s => s.Jobs);
    }

调用代码只需要一个 ToList() 方法:

var people = _repository.GetPeople().ToList();

people 变量现在包含一个人员对象列表,每个对象都有一个作业对象列表。 噗!!