使用Entity Framework代码返回子对象第一个错误:无法计算表达式。操作不受支持。未知错误:0x80070057

时间:2016-01-21 11:17:53

标签: c# entity-framework

我一直收到以下错误

  

无法评估表达式。操作不受支持。未知   错误: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依赖项,但更愿意理解这个问题并在可能的情况下修复它。

1 个答案:

答案 0 :(得分:1)

经过一番可观的努力,以下问题克服了这个问题:

_context的存储库方法:

def hideBG():
    global state
    if state == "Hidden":
        background_label.pack()
        state = "Showing"

    elif state == "Showing":
        background_label.pack_forget()
        state = "Hidden"




window = tkinter.Tk()

background_image=tkinter.PhotoImage(file="BG.png")
background_label = tkinter.Label(window, image=background_image)

hideBttn = tkinter.Button(window, text="Hide Background", command=hideBG)
state = "Showing"

hideBttn.pack()
background_label.pack()

window.mainloop()

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

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

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