请教一个关于Entity Framework的问题。我直接用的生成的ObjectContext的继承类。
数据库中,有个字段是xml类型的(映射到实体上,是一个string,不是LinqToSQL的XElement),普通的XML文本的insert/update(ObjectContext.AddToXXXX(newOne))是通过测试的。
但是如果遇到包含
<!DOCTYPE rdf:RDF [
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
信息的文本,在调用SaveChanges()时会抛出异常:
InnerException
{"不允许使用内部子集 DTD 分析 XML。请将 CONVERT 与样式选项 2 一起使用,以启用有限的内部子集 DTD 支持。"}
System.Exception {System.Data.SqlClient.SqlException}
之前有查到convert(xml, xxxxxxx, 1)是在xml中保留格式空白。现在异常中提示改用参数2。
不知道这种问题怎么解决?通过存储过程解决?那样总觉得和其它的insert/update实现的风格不同,总不能所有的insert/update操作都改为通过存储过程实现吧?
PS1:DTD:Document Type Definition
PS2: 我现在改用Linq to sql,不再抛异常了 -_-||
其实可以将xml类型的字段进行数据转换,转换后就不会出现这种问题了,因为转换后的代码.net识别不了了:)
我在上面说了,在SQL Server端,调用CONVERT,可以进行转换……这样一来就得用存储过程了
@Jerin: Sql语句就可以了,不用存储过程,如Select Convert ......