HierarchyID dans Entity Framework ne fonctionne pas

c# entity-framework hierarchyid

Question

Nous utilisons le service de données WCF basé sur un modèle Entity Framework pour notre application.

En cela, nous devons ajouter la table avec une colonne de type HierarchyId . Lorsque j'ajoute cette table au fichier EDMX, la colonne HierarchId n'apparaît pas dans le fichier de classe.

Que dois-je faire pour utiliser HierarchyID ? J'ai lu qu'Entity Framework ne prend pas en charge HierarchyID , comment puis-je y parvenir?

Réponse acceptée

Vous pouvez toujours convertir un HierarchyId en sa représentation sous forme de chaîne - quelque chose comme /1/3/4/1 - et envoyer cette chaîne via le service de données WCF.

Mise à jour: si vous ajoutez cette colonne calculée et persistante à votre table SQL Server, cette nouvelle colonne devrait absolument apparaître dans votre modèle EF et vous devriez pouvoir l'utiliser pour la renvoyer via WCF et WCF Data Services:

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

Mise à jour # 2: lisez la documentation ! Vous pouvez analyser une chaîne telle que /1/3/4/1 HierarchyId dans un type HierarchyId - utilisez soit la méthode HierarchyId::Parse(string) soit les méthodes CAST(string as HierarchyId) habituelles.


Réponse populaire

Si vous utilisez la colonne calculée, gardez simplement à l'esprit que vous aurez également besoin de l'annotation de données DatabaseGenerated sur votre propriété, comme suit:

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

Consultez cet article pour plus d'informations: Propriétés de premier calcul calculé par Entity Framework Code



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow