Использование XML-столбца (Sql Server) с Entity Framework - PullRequest
16 голосов
/ 14 апреля 2009

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

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

Привет.

Ответы [ 2 ]

6 голосов
/ 14 мая 2009

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

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

2 голосов
/ 12 мая 2011

Вот что я сейчас делаю: я добавляю метод в частичный класс, соответствующий моей модели, у которого свойство .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...