2016-11-08 1 views
1

Ich erstelle eine ASP.NET Core-Anwendung und ich habe meine Datenbank zu einem EFCore DbContext gerüstet.EFCore mit NewtonSoft Json Serialisierung von gerüsteten Datenbank: ignorieren nicht geladenen Navigationseigenschaften

Alle One-to-Many-Navigationseigenschaften sind als public virtual ICollection<Type> NavProp { get; set; } definiert, und der Gerüstbauer fügt eine Initialisierung im Entitätskonstruktor als NavProp = new HashSet<Type>() hinzu.

Ich habe einen Daten-Controller, der Daten aus dem DbContext zurückgibt: return this.DbContext.MyData.First();

Wie kann ich die Json Serializer vermeiden, dass die Navigationseigenschaften serialisiert, dass ich nicht explizit in meiner Anfrage enthalten? Dies vermeidet das Laden nicht benötigter Daten und auch das Referenz-Looping.

Antwort

1

Wenn Sie nicht dann übertragen möchten würden Sie sie nicht in der Abfrage enthalten müssen ...

Abfrage nur die Spalten, die Sie brauchen, und speichern sie in DTOs (Objekte Data Transfer) wie:

return this.DbContext.MyData.First().Select(x => new MyDataDto { Id = x.Id, Name = x.Name }); 

und eine DTO-Klasse wie:

public class MyDto { 
    // All the properties you want to tranfer 
    public int Id { get; set } 
    public string Name { get; set; } 
    // your props... 
} 

Mit diesem Ansatz Sie die Kontrolle über das, was übertragen wird.

+0

Hallo, gibt es eine andere Alternative als die Verwendung von DTOs? – Dede

+0

Ich denke nicht. – Daniel

Verwandte Themen