Utilisation d'une colonne XML (serveur SQL) avec Entity Framework

entity-framework sql-server-2008 xml

Question

Quelqu'un a-t-il essayé d'utiliser des colonnes typées xml avec Entity Framework? L'entité renvoie une chaîne.

La prochaine version d'Entity Framework prendra-t-elle en charge les types XElement lorsque la colonne de table est de type XML?

Cordialement.

Réponse acceptée

Entity Framework renvoie le contenu des colonnes XML (tapé ou non) sous forme de chaînes afin qu'il ne puisse pas créer une entité à partir du contenu des documents xml (ce sont des nœuds) ... si vous êtes toujours curieux de lire cet article, cela vous donnera une solution possible ..i n'a pas essayé cependant ( texte du lien )

pour répondre à la dernière question de Marc, je m'attends à voir dans la prochaine version de EF la possibilité de mapper le contenu des documents XML en tant qu'entités, comme c'est le cas avec les tables normales et les relations qui les unissent .. ou du moins de Document XML en tant que propriétés dans des entités.


Réponse populaire

Voici ce que je fais maintenant: j'ajoute une méthode à une classe partielle correspondant à mon modèle qui possède une propriété .Data en tant que chaîne.

Vous avez essentiellement appel à instance.UseData ((data) => {...});

À partir de là, dans l'expression lambda, vous pouvez lire / manipuler des données et les enregistrer dans le champ d'origine de la base de données ... J'aimerais pouvoir simplement créer une propriété pour cela, qui est liée à un événement pour mettre à jour le fichier. domaine connexe.

J'enfonce une structure plus dynamique dans le champ de données en tant que XML ... c'est plus naturel dans VB.Net que C # .. si mon projet était en C #, je pourrais être enclin à préférer JSON ...

C #

public void UseData(Action editor)
{
    var def = XElement.Parse("");
    XElement data;
    try
    {
        if (String.IsNullOrWhiteSpace(this.Data))
        {
            data = def;
        }
        else
        {
            data = XElement.Parse(this.Data);
        }
    }
    catch (Exception ex)
    {
        data = def;
    }
    editor(data);
    this.Data = data.ToString();
}

VB.Net

Public Sub UseData(editor As Action(Of XElement))
    Dim def = 
    Dim data As XElement
    Try
        If String.IsNullOrWhiteSpace(Me.Data) Then
            data = def
        Else
            data = XElement.Parse(Me.Data)
        End If
    Catch ex As Exception
        data = def
    End Try
    editor(data)
    Me.Data = data.ToString()
End Sub



Related

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