我正在通过C#中的代码更新一些XML,当我将其插入数据库(varchar列)时,我看到了一个额外的?。我认为这与我正在执行的Encoding.UTF8有关。 ?在EF核心中调用SaveChanges()的过程中并没有解决所有问题。
varchar中的数据库列,由于其设置方式等原因而无法更改。
我不确定从仪表板(即开发快递)保存xml后应如何将xml转换回字符串
internal static async Task<string> ConvertXmlToNewConnectionStrings(string xml, List<ConnectionSourceViewModel> connectionSourceViews, int currentUserId)
{
var connectionStringOptions = await GetConnectionStringOptions(currentUserId).ConfigureAwait(false);
System.Xml.Linq.XDocument doc;
using (StringReader s = new StringReader(xml))
{
doc = System.Xml.Linq.XDocument.Load(s);
}
Dashboard d = new Dashboard();
d.LoadFromXDocument(doc);
var sqlDataSources = d.DataSources.OfType<DashboardSqlDataSource>().ToList();
foreach (var item in sqlDataSources)
{
// We do not want the properties in the data source anymore... this includes user name and password etc... the new way dev ex went with this functionality
item.ConnectionParameters = null;
// get the selected connection string from the end user
var connectionStringId = connectionSourceViews.Where(x => x.SqlDataSourceComponentName == item.ComponentName).Select(x => x.SelectedConnectionStringId).FirstOrDefault();
if (string.IsNullOrWhiteSpace(connectionStringId) == false)
{
item.ConnectionName = connectionStringOptions.Where(x => x.Value == connectionStringId).Select(x => x.Text).FirstOrDefault();
}
}
MemoryStream ms = new MemoryStream();
d.SaveToXml(ms);
byte[] array = ms.ToArray();
ms.Close();
xml = Encoding.UTF8.GetString(array, 0, array.Length);
return xml;
}
我期待着?通过EF Core保存后,不会将其添加到varchar的数据库列中的XML
的图片?开始时: https://ibb.co/LZ2QVtr
答案 0 :(得分:0)
我最终删除了执行MemoryStream()的代码,然后将文档保存回XDocument()。
doc = d.SaveToXDocument();
现在一切正常,数据库中没有问号(?)!