2016-09-29 5 views
0

Ich verwende zuerst Entity Framework v6.0 DB.IgnoreDataMember-Attribut für MetaData-Klasse funktioniert nicht

Ich habe ein Problem, wo eine bestimmte Klasse bei der Serialisierung aufgrund einer bestimmten Navigationseigenschaft bricht.

Wenn ich zur Ergänzung der automatisch generierten Klasse cs das Attribut IgnoreDataMember alles funktioniert wie (Serialisierung geht) erwartet, aber ich kann es nicht, dass es natürlich verlassen, weil jemand das nächste Mal die Skripte erzeugen sie so verschwinden Ich habe MetaData Klasse wie folgt erstellt und es funktioniert einfach nicht. (Die Serialisierung bricht noch)

Metadata:

public class SomeClassMetaData 
{ 
    [IgnoreDataMember] 
    public virtual ICollection<SomeFoo> FOO { get; set; } 
} 

Partial (nicht automatisch generiert) Klasse:

[MetadataType(typeof(SomeClassMetaData))] 
public partial class SomeClass 
{ 

} 

Partial (auto erzeugt) Teil der Klasse:

public virtual ICollection<SomeFoo> FOO { get; set; } 

Ich habe überprüft:

  • Teilklasse gleichnamigen
  • gleichen Namensraum
  • sowohl öffentliche als Teilmodell Browser
  • öffnen und speichern.

Keine Ahnung, was falsch ist.

Antwort

1

Leider funktioniert [IgnoreDataMember] nicht mit EF6-Proxy-Objekten. Metadatatype funktioniert nur mit DataAnnotations. Funktioniert nicht für die Serialisierung. Muss direkt in den Eigenschaften in der Entity angegeben werden. Wenn Sie die T4-Vorlage für die Klassengenerierung verwenden, möchten Sie möglicherweise eine Logik hinzufügen, um diese Attribute direkt in der Vorlage zu erstellen. Die Funktion, die Sie berücksichtigen sollten, heißt "Strukturelle Anmerkung". Überprüfen Sie diesen Link für weitere Informationen.

https://blogs.msdn.microsoft.com/efdesign/2008/08/12/structural-annotations-one-pager/

+0

Dank :(Ich werde in das ... eine andere Option vielleicht? –

+0

Eine alternative Option ist die Entität abzubilden Modelle, um Modelle anzuzeigen, die die Eigenschaft ausschließen und dann die Ansichtsmodelle serialisieren.Ich bin jedoch nicht sicher, ob dies eine Verbesserung gegenüber strukturellen Anmerkungen ist. – Bago

0

Nach Raj Antwort dies nicht getan werden kann.

Umgehung, dass ich diese Tabelle ohne diese Navigationseigenschaft auswählte. (In meinem Fall verwenden wir oData, also verwenden Sie einfach $ auswählen zu allen Spalten außer dieser.)

Verwandte Themen