2017-03-15 2 views
0

Ich habe folgende Klasse:EF Kern: Macht Referenzobjekt nur lesbar, aber immer noch includable

public class Post 
{ 
    public int PostId { get; set; } 
    public string Title { get; set; } 
    public string Content { get; set; } 

    public int BlogId { get; set; } 
    public Blog Blog { get; set; } 
} 

Ich mag nur lesbar die Referenznavigationseigenschaft machen, um sicherzustellen, dass die abhängige Einheit nicht durch die Haupteinheit geändert werden.

Ich habe versucht, es wie folgt aus:

public Blog Blog { get; } 

Aber dann bekomme ich folgende Fehlermeldung, wenn er versucht, eine Include auszuführen: „Der Ausdruck‚[post] .Blog‘übergeben an der Include-Betreiber konnte nicht gebunden sein. "

Wie stelle ich die Referenznavigationseigenschaft schreibgeschützt aber noch einschließbar?

Antwort

0

Wenn die Modellklasse in der gleichen Assembly und Namespace als EF Kontext ist, und andere Nutzungen sind nicht, können Sie versuchen, machen Blog ‚s Setter internal, die EF es einrichten können, aber Versuche zu verhindern, dass an anderer Stelle. Möglicherweise müssen Sie auch Ihre AssemblyInfo-Datei für das Projekt anpassen, um die Interna für die EntityFramework-DLL und die Namespaces sichtbar zu machen, da der Code, der die Einstellung ausführt, dort vorhanden sein wird.

Denken Sie daran, dass dies zwar verhindert, dass andere Codierer Blog auf eine neue Instanz eines Blog-Typs setzen, die vorhandene Instanz jedoch veränderbar ist, sodass Codierer/Benutzer die Datenmitglieder aktualisieren können, ohne den in Post gespeicherten Verweis zu ändern . Sie können die Setter im Blog sperren, indem Sie sie ähnlich wie die Blog-Eigenschaft bei Post internalisieren, aber Sie beginnen, eine Dose Würmer zu öffnen, um absichtliche Änderungen an einem Blog vorzunehmen. Wenn alle Blogs außer DAL immer schreibgeschützt sind, besteht die einzige Möglichkeit zum Ändern eines Blogs darin, eine Methode in Ihrem DAL verfügbar zu machen, die eine veränderbare Variante eines Blogs wie ein BlogDto verwendet und die angegebenen Parameter in den Blog kopiert Objekt. Wenn es das ist, was du willst, großartig, aber es ist wahrscheinlich nicht, ob du das noch weißt oder nicht.

Verwandte Themen