entity framework存储XML数据类型; “无法切换编码”错误

我在使用.NET Framework 4.5的C#项目中使用Entity Framework 6.0.0版。 我有一个类Filing谁有一个SQL Server列XmlContentxml数据类型。 我有数据库优先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无论如何都不存储声明 )

有任何想法吗?