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

时间:2019-05-27 20:12:42

标签: c# xml

我正在通过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

1 个答案:

答案 0 :(得分:0)

我最终删除了执行MemoryStream()的代码,然后将文档保存回XDocument()。

doc = d.SaveToXDocument();

现在一切正常,数据库中没有问号(?)!