Я обновляю некоторый XML с помощью кода на С#, и когда я вставляю его в свою базу данных (столбец varchar), я вижу дополнительный?. Я думаю, что это связано с кодировкой Encoding.UTF8, которую я делаю. ? НЕ существует на протяжении всего процесса вызова SaveChanges() в ядре EF.
Столбец базы данных в varchar и не может быть изменен из-за того, как он был настроен и т. д.
Я не уверен, как мне преобразовать xml обратно в строку после его сохранения с панели инструментов (это dev express)
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;
}
Я ожидаю? не добавляется в XML в столбце базы данных varchar после его сохранения через EF Core
Изображение ? в начале: https://ibb.co/LZ2QVtr
@jdweng Может быть, но он уже готов, когда я читаю XML в свое приложение, и это вызывает ошибки :-(
Это должно быть удалено. Сначала узнайте шестнадцатеричное значение символа.
@jdweng Спасибо. Я сообщу, как только выясню, как удалить его после его добавления при сохранении через EF Core и т. д.
В итоге я удалил код, который выполняет MemoryStream(), и перешел к сохранению документа обратно в XDocument().
doc = d.SaveToXDocument();
Теперь все работает нормально и в базе данных не ставится вопросительный знак (?)!
Это непечатаемый символ, вероятно, SOH.