entity framework存储XML数据类型; “无法切换编码”错误
我在使用.NET Framework 4.5的C#项目中使用Entity Framework 6.0.0版。 我有一个类Filing
谁有一个SQL Server列XmlContent
是xml
数据类型。 我有数据库优先entity framework我主要用于将行保存到Filing
表(我目前不会读回那些行,如果这有所不同)
我已经阅读了有关“字符串”支持属性的这些post,以便使用Entity Framework保存到XML列,如此处和此处所述
我的XML声明看起来像这样
....
我的entity framework自动生成(数据库优先)如下所示:
public partial class Filing { ... public string XmlContent { get; set; } ...
使用我的自定义分部类(保存到字符串属性…):
public partial class Filing { [NotMapped] public XmlDocument XmlDocument { get { var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(this.XmlContent); return xmlDocument; } set { this.XmlContent = value.OuterXml; } }
我这样做的时候:
eFileEntities.Filings.Add(filingWithUtf8XmlString); eFileEntities.SaveChanges();
我得到一个exception,其InnerException(最终)读取:
"XML Parsing : line 1 , character 38, unable to switch the encoding."
我已经阅读了有关我遇到的错误的post,“无法切换编码”
- https://stackoverflow.com/a/8998183/1175496
- https://stackoverflow.com/a/1091209/751158
- 这些答案建议使用
SqlXml
数据类型,因此无需担心编码。 但我不知道如何在Entity Framework的上下文中这样做
- 这些答案建议使用
- https://stackoverflow.com/a/385756/1175496
- https://stackoverflow.com/a/1564803/1175496
- 如果我将XML声明更改为使用
encoding="utf-16"
,这些答案表明,EntityFramework可以saveChanges()
没有错误, 但我想避免(如果可能) :- 改变编码
- 剥离声明(尽管我理解SQL Server无论如何都不存储声明 )
- 如果我将XML声明更改为使用
有任何想法吗?