【问题标题】:Returning child objects with Entity Framework code first error: Unable to evaluate the expression. Operation not supported. Unknown error: 0x80070057返回具有实体框架代码第一个错误的子对象:无法评估表达式。不支持操作。未知错误:0x80070057
【发布时间】:2016-01-22 00:10:49
【问题描述】:

我不断收到以下错误

无法计算表达式。不支持操作。未知 错误: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 =&gt; o.Jobs) 会引发上述错误。

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

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    在拉了一些相当大的头发之后,解决了这个问题:

    _context 的存储库方法:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2019-03-16
      • 2021-06-03
      相关资源
      最近更新 更多