Verwenden einer XML-Spalte (SQL Server) mit Entity Framework

entity-framework sql-server-2008 xml

Frage

Hat jemand versucht, XML-typisierte Spalten mit Entity Framework zu verwenden? Die Entität gibt eine Zeichenfolge zurück.

Unterstützt die nächste Version von Entity Framework XElement-Typen, wenn die Tabellenspalte vom Typ XML ist.

Grüße.

Akzeptierte Antwort

Entity Framework gibt XML-Spalteninhalt (getippt oder nicht) als Zeichenfolgen zurück, sodass aus dem Inhalt der XML-Dokumente (Knoten) keine Entität erstellt werden kann. Wenn Sie diesen Artikel dennoch interessiert, können Sie diesen Artikel lesen ..ich habe es nicht versucht ( Linktext )

Um Marc's letzte Frage zu beantworten. Was ich in der nächsten Version von EF erwartet, ist die Möglichkeit, den Inhalt von XML-Dokumenten als Entitäten zuzuordnen, wie dies bei normalen Tabellen und den Beziehungen zwischen ihnen der Fall ist XML-Dokument als Eigenschaften in Entitäten ..


Beliebte Antwort

Hier ist, was ich jetzt mache. Ich füge einer Teilklasse, die zu meinem Modell passt, eine Methode hinzu, die eine .Data-Eigenschaft als String hat.

Im Wesentlichen haben Sie den Aufruf instance.UseData ((data) => {...});

Innerhalb des Lambda-Ausdrucks können Sie dann Daten lesen / bearbeiten und sie werden in das ursprüngliche Feld für die Datenbank zurückgespeichert verwandtes Gebiet.

Ich füge mehr dynamische Struktur als XML in das Datenfeld ein ... das ist in VB.Net natürlicher als in C # .. wenn mein Projekt in C # wäre, könnte ich JSON bevorzugen ...

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum