Подтвердить что ты не робот

Использование столбца xml-сервера (Sql Server) с Entity Framework

Кто-нибудь пытался использовать столбцы с XML-строками с Entity Framework? Объект возвращает строку.

Будет ли следующая версия Entity Framework поддерживать типы XElement, когда столбец таблицы имеет тип XML.

С уважением.

4b9b3361

Ответ 1

Entity Framework возвращает содержимое столбцов XML (напечатано или нет) в виде строк, поэтому он не может создать объект из содержимого документов xml (его узлы)... если вам все еще любопытно прочитать эту статью, это дает возможное решение к вашей проблеме..и не пробовал, хотя (текст ссылки)

чтобы ответить на последний вопрос Марка. Что я ожидаю увидеть в следующей версии EF, это возможность сопоставить содержимое XML-документов как сущностей, например, с обычными таблицами и отношениями между ними.. или, по крайней мере, сделать части документа xml как свойства в объектах.

Ответ 2

Вот что я делаю сейчас: я добавляю метод в частичный класс, соответствующий моей модели, у которой свойство .Data является строкой.

По сути, у вас есть вызов instance.UseData((data) => {...});

Оттуда в лямбда-выражении вы можете читать/манипулировать данными, и они сохраняются обратно в исходное поле для базы данных... Я хотел бы просто иметь возможность создать свойство для этого, которое связано с событием для обновления смежное поле.

Я добавляю более динамическую структуру в поле данных в виде XML... это более естественно в VB.Net, чем в С#... если бы мой проект был на С#, я мог бы склоняться в пользу JSON...

С#

public void UseData(Action<XElement> editor)
{
    var def = XElement.Parse("<Data></Data>");
    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 = <Data></Data>
    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