Utilizzo di una colonna xml (Sql Server) con Entity Framework

entity-framework sql-server-2008 xml

Domanda

Qualcuno ha provato a utilizzare le colonne digitate xml con Entity Framework? L'entità restituisce una stringa.

La prossima versione di Entity Framework supporta i tipi XElement quando la colonna della tabella è di tipo XML.

Saluti.

Risposta accettata

Entity Framework restituisce il contenuto delle colonne XML (digitato o meno) come stringhe in modo che non possa creare un'entità dal contenuto dei documenti xml (sono i nodi) ... se sei ancora curioso di leggere questo articolo, dà una possibile soluzione al tuo problema .. non l'ho provato però ( link text )

per rispondere all'ultima domanda di Marc..quello che mi aspetto di vedere nella prossima versione di EF è la possibilità di mappare i contenuti dei documenti xml come entità, come fa con le normali tabelle e le relazioni tra loro .. o almeno per fare parti del documento xml come proprietà in entità ..


Risposta popolare

Ecco cosa sto facendo ora, sto aggiungendo un metodo a una classe parziale che corrisponde al mio modello che ha una proprietà .Data come una stringa.

Essenzialmente si chiama istanza.UseData ((dati) => {...});

Da lì all'interno dell'espressione lambda puoi leggere / manipolare i dati e tornare al campo originale per il database ... Mi piacerebbe solo essere in grado di creare una proprietà per questo, che è legata a un evento per aggiornare il campo correlato.

Sto spingendo più dinamica struttura nel campo dati come XML ... questo è più naturale in VB.Net che C # .. se il mio progetto fosse in C # potrei essere propenso a favorire 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

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché