【问题标题】:SQL XML datatype equivalent in C# .netC# .net 中等效的 SQL XML 数据类型
【发布时间】:2019-09-30 11:32:54
【问题描述】:

我目前正在从 XML 文件中解析数据并将它们存储到数据库的 nvarchar 字段中。我现在希望将 NVarchar 更改为 XML。我在 EF Core 上使用 Code First 方法,C# .net 中的 XML 等效数据类型是什么?

之前的一些查询表明我可以使用字符串 (C# Equivalent of SQL Server DataTypes),但有些则建议使用其他内容 (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;

【问题讨论】:

  • 数据上下文自动将XML映射到XElement

标签: c# sql xml


【解决方案1】:

我会避免直接使用字符串——尤其是在你只需要存储数据的情况下。要么选择SqlXml,要么选择其他能给读者的东西。比如这样:

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

(连接和命令对象省略)。

这里的重要建议是不要自己使用字符串对象,而是你已经发现 ymmv...

【讨论】:

    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多