2016-01-21 3 views
5

Ich erhalte den folgenden FehlerZurückgegebene untergeordnete Objekte mit dem ersten Fehler des Entity Framework-Codes: Der Ausdruck konnte nicht ausgewertet werden. Vorgang wird nicht unterstützt. Unbekannter Fehler: 0x80070057

Unable to evaluate the expression. Operation not supported. Unknown error: 0x80070057

, wenn ein übergeordnetes Objekt und seine Kinder zurückzubringen versucht.

Die Datenbank erstellt, seeds und hat alle Beziehungen richtig definiert, soweit ich sehen kann. Ich baute ein kleineres Modell nur zu Test- und zum Zweck, das Problem der zeigt:

Geordnetes Objekt:

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; } 
} 

Child-Objekt:

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; } 
} 

Rückkehr _context.Person Werke und gibt die Liste der Person mit Nulljobs

Zurückgeben _context.Person.Include(o => o.Jobs) löst den obigen Fehler aus.

Das weiß ich ist einfaches Zeug und nur zwei sehr einfache Tabellen, aber ich kann nicht sehen, wo das Problem liegt, wie ich dieses Modell senario unzählige Male ohne ein Problem erstellt habe. Ich denke darüber nach, die Projekt- und EF-Abhängigkeiten neu zu erstellen, würde es jedoch vorziehen, dieses Problem zu verstehen und es nach Möglichkeit zu beheben.

Antwort

1

Nachdem einige erhebliche Haare ziehen die folgenden das Problem überwunden:

Das Repository Methode für _context:

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

Die Telefonvorwahl benötigt nur eine ToList() -Methode:

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

Die People-Variable enthält nun eine Liste von Person-Objekten mit jeweils einer Liste von Job-Objekten. Pheeew !!

Verwandte Themen