Эквивалент типа данных SQL XML в C # .net - PullRequest
0 голосов
/ 30 сентября 2019

В настоящее время я анализирую данные из файла XML и сохраняю их в поле nvarchar в базе данных. Теперь я хочу изменить NVarchar на XML. Я использую подход Code First на EF Core, что такое XML-эквивалентный тип данных в C # .net?

Некоторые предыдущие запросы предполагают, что я могу использовать String ( C # Эквивалент типов данных SQL Server ), но некоторые предлагают что-то другое (https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-data-type-mappings?redirectedfrom=MSDN).

Я хочу уточнитьо том, что является лучшим подходом для моего запроса, когда я не манипулирую содержимым XML, я просто анализирую файл и вставляю данные в базу данных.

Обновление:

В итоге я использовалСтрока на C # .net, так как мне не нужно было делать никаких манипуляций с XML, я скопировал данные из файла и отправил их в виде строки. Ниже приведен код, который я использовал:

     var doc = new XmlDocument();
                doc.Load(file.FullName);

                if (doc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
                {
                    XmlDeclaration xmlDeclaration = (XmlDeclaration)doc.FirstChild;
                    if (String.Compare(xmlDeclaration.Encoding, Encoding.Unicode.WebName, StringComparison.OrdinalIgnoreCase) != 0)
                    {
                        xmlDeclaration.Encoding = Encoding.Unicode.WebName;
                    }
                }
                string XmlString = doc.OuterXml;

1 Ответ

0 голосов
/ 30 сентября 2019

Я бы не стал использовать строку напрямую - особенно в том случае, когда вам просто нужно хранить данные. Или используйте SqlXml или что-то еще, что дает читатель. Например, вот так:

var param = cmd.Parameters.Add("@xml", SqlDbType.Xml);
var doc = XDocument.Load(xmlFilePath);
param.Value = doc.CreateReader();
cmd.ExecuteNonQuery();

(объект Connection и Command не указан).

Важный совет здесь заключается в том, чтобы просто не использовать строковый объект самостоятельно, а, как вы уже обнаружили, ymmv...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...