C# 将XML更新为varchar SQL列时出现问题
我正在通过C语言的代码更新一些XML,当我将它插入到我的数据库varchar列中时,我看到了一个额外的?。我认为这与编码有关。我正在做UTF8。这个在EF core中调用SaveChanges的过程中,不是一直都有 varchar中的数据库列,由于设置方式等原因无法更改 我不确定在从仪表板(devexpress)保存xml后,应该如何将其转换回字符串C# 将XML更新为varchar SQL列时出现问题,c#,xml,C#,Xml,我正在通过C语言的代码更新一些XML,当我将它插入到我的数据库varchar列中时,我看到了一个额外的?。我认为这与编码有关。我正在做UTF8。这个在EF core中调用SaveChanges的过程中,不是一直都有 varchar中的数据库列,由于设置方式等原因无法更改 我不确定在从仪表板(devexpress)保存xml后,应该如何将其转换回字符串 internal static async Task<string> ConvertXmlToNewConnectionS
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中
形象?开始时:
我最终删除了执行MemoryStream的代码,并将文档保存回XDocument
doc = d.SaveToXDocument();
现在一切正常,数据库中没有任何问号 它是一个不可打印的字符,可能是SOH。@jdweng它可能是,但当我将XML读入我的应用程序时,它正在准备就绪,并导致错误:-必须删除它。首先找出字符的十六进制值。@jdweng谢谢。我会报告回来,一旦我知道如何删除后,它被添加在通过EF核心保存等。