У меня есть несколько XML фрагментов, которые я храню через NHibernate (3.2.0.4000) в SQL Серверной базе данных. Столбец таблицы определен как XML. Хранение и обновление XML работает, но в базе данных мне не хватает первого узла с информацией о кодировке и версии.
C# объект, внутренний XML:
<?xml version="1.0" encoding="utf-16"?>
<RsSn>
<Layermapping xmlns="someNamespace">
<Layer layerName="0" layerDescription="5876548" />
<Layer layerName="1" layerDescription="5876549" />
</Layermapping>
</RsSn>
SQL Профилировщик сервера при вставке данных:
declare @p6 xml
set @p6=convert(xml,
N'<RsSn><Layermapping xmlns="someNamespace">
<Layer layerName="0" layerDescription="5876548"/>
<Layer layerName="1" layerDescription="5876549"/>
</Layermapping>
</RsSn>'
)
<?xml version="1.0" encoding="utf-16"?>
элемент отсутствует!
Содержимое SQL столбца сервера (через SSMS studio):
<RsSn>
<Layermapping xmlns="someNamespace">
<Layer layerName="0" layerDescription="5876548" />
<Layer layerName="1" layerDescription="5876549" />
</Layermapping>
</RsSn>
Конфигурация NHibernate (часть файла сопоставления)
<class name="SnippetEntity" table="tblSnippet">
<id name="SnippetPK" column="SnippetPK" type="Int64">
<generator class="native" />
</id>
<property name="ResourceData" column="ResourceData" type="NHibernate.Type.XmlDocType"/>
</class>
Мне не разрешено обновлять сборку NHibernate.
Это правильный тип, который я использую в файле сопоставления?
Есть ли какая-то другая конфигурация, которую я должен использовать, чтобы документ хранился «хорошо сформированным» в базе данных?