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

entity-framework sql-server-2008 xml

Вопрос

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

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

С уважением.

Принятый ответ

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

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


Популярные ответы

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

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

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

Я добавляю более динамическую структуру в поле данных в виде XML ... это более естественно в VB.Net, чем в C # ... если бы мой проект был на C #, я мог бы склоняться в пользу 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

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow