2009-04-14 19 views

Respuesta

6

Entity Framework devuelve el contenido de las columnas XML (mecanografiadas o no) como cadenas para que no pueda crear una entidad a partir del contenido de los documentos xml (sus nodos) ... si todavía tiene curiosidad lea este artículo, da una posible solución a su problema ... no lo intenté (link text)

para contestar la última pregunta de Marc ... lo que espero ver en la próxima versión de EF es la posibilidad de asignar contenido de documentos xml como entidades, como lo hace con las tablas normales y las relaciones entre ellas ... o al menos hacer que las partes del documento xml sean propiedades en entidades ...

2

Esto es lo que estoy haciendo ahora, estoy agregando un método a una clase parcial haciendo coincidir mi modelo que tiene una propiedad .Data como una cadena.

Esencialmente tiene invocar instance.UseData ((data) => {...});

A partir de allí, dentro de la expresión lambda puede leer/manipular datos y se guarda en el campo original de la base de datos ... Me encantaría poder crear una propiedad para esto, que esté vinculada a un evento para actualizar el campo relacionado.

estoy empujando estructura más dinámica en el campo de datos como XML ... esto es más natural que en VB.Net C# .. si mi proyecto estuviera en C# que podría estar inclinado a favorecer 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

Cuestiones relacionadas