返回包含实体框架代码的子对象的第一个错误:无法计算表达式.不支持操作.未知错误: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 依赖项,但更愿意了解此问题并在可能的情况下修复它。
经过一些相当大的头发拉扯,以下克服了这个问题:
_context的存储库方法:
public IQueryable<Person> GetPeople()
{
return _context.Person.Include(s => s.Jobs);
}
调用代码只需要一个 ToList() 方法:
var people = _repository.GetPeople().ToList();
people 变量现在包含一个人员对象列表,每个对象都有一个作业对象列表。 噗!!