【发布时间】:2020-05-02 08:35:12
【问题描述】:
我有一些通过 NHibernate (3.2.0.4000) 存储在 SQL Server 数据库中的 XML sn-ps。表列定义为 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 Server Profiler:
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 工作室):
<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 程序集。
这是我在映射文件中使用的正确类型吗?
我是否必须使用其他配置才能将文档“格式正确”存储在数据库中?
【问题讨论】:
标签: c# .net sql-server xml nhibernate