12 Stimmen

HierarchyID in Entity Framework funktioniert nicht

Wir verwenden WCF Data Service auf der Grundlage eines Entity Framework-Modells für unsere Anwendung.

In diesem müssen wir die Tabelle mit einer Spalte vom Typ HierarchyId . Wenn ich diese Tabelle zur EDMX-Datei hinzufüge, wird die HierarchId Spalte nicht in der Klassendatei enthalten ist.

Was sollte ich tun, um die HierarchyID ? Ich habe gelesen, dass Entity Framework nicht unterstützt wird HierarchyID Wie kann ich dies also erreichen?

24voto

marc_s Punkte 701497

Sie können jederzeit eine HierarchyId in seine String-Darstellung umzuwandeln - etwa so /1/3/4/1 - und senden diese Zeichenfolge über den WCF-Datendienst.

Aktualisierung: Wenn Sie diese berechnete, persistierte Spalte zu Ihrer SQL Server-Tabelle hinzufügen, sollte diese neue Spalte auf jeden Fall in Ihrem EF-Modell auftauchen und Sie sollten in der Lage sein, diese zu verwenden, um sie über WCF und WCF Data Services zurückzusenden:

ALTER TABLE dbo.YourTable
ADD HierarchyString AS (your hierarchyID field).ToString() PERSISTED

Update #2: die Dokumente lesen ! Sie können eine Zeichenkette zurückanalysieren wie /1/3/4/1 in eine HierarchyId Typ - verwenden Sie entweder die HierarchyId::Parse(string) oder die üblichen CAST(string as HierarchyId) Methoden, um dies zu tun.

10voto

Eric Punkte 3502

Wenn Sie die berechnete Spalte verwenden, denken Sie daran, dass Sie auch die Annotation DatabaseGenerated data für Ihre Eigenschaft benötigen, wie hier:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string HierarchyString { get; set; }

In diesem Artikel finden Sie weitere Informationen: Entity Framework Code Erste berechnete Eigenschaften

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X