C# 将XML更新为varchar SQL列时出现问题

C# 将XML更新为varchar SQL列时出现问题,c#,xml,C#,Xml,我正在通过C语言的代码更新一些XML,当我将它插入到我的数据库varchar列中时,我看到了一个额外的?。我认为这与编码有关。我正在做UTF8。这个在EF core中调用SaveChanges的过程中,不是一直都有 varchar中的数据库列,由于设置方式等原因无法更改 我不确定在从仪表板(devexpress)保存xml后,应该如何将其转换回字符串 internal static async Task<string> ConvertXmlToNewConnectionS

我正在通过C语言的代码更新一些XML,当我将它插入到我的数据库varchar列中时,我看到了一个额外的?。我认为这与编码有关。我正在做UTF8。这个在EF core中调用SaveChanges的过程中,不是一直都有

varchar中的数据库列,由于设置方式等原因无法更改

我不确定在从仪表板(devexpress)保存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中

形象?开始时:

我最终删除了执行MemoryStream的代码,并将文档保存回XDocument

doc = d.SaveToXDocument();

现在一切正常,数据库中没有任何问号

它是一个不可打印的字符,可能是SOH。@jdweng它可能是,但当我将XML读入我的应用程序时,它正在准备就绪,并导致错误:-必须删除它。首先找出字符的十六进制值。@jdweng谢谢。我会报告回来,一旦我知道如何删除后,它被添加在通过EF核心保存等。