.net - 您应该在 SQL Server 2016 中进行多次插入调用还是传递 XML?
问题描述
这个问题来自 2012 年的 SQL Server 2008,我想知道 SQL Server 2016 及更高版本是否仍然相关:您应该进行多次插入调用还是传递 XML?
上述帖子中的论点是preparedocument
andOPENXML
是昂贵的调用并且使用起来令人困惑。
这篇文章在一次调用中将数组或记录列表作为 XML 数据保存到 SQL Server似乎与上一篇文章不一致,但也没有提及性能。
我有一个实体,它的子属性EntityTranslations
是List<Translations>
.
我使用表类型的问题是我发现它在应用程序的 .net 端很笨拙。
设置数据表、列、循环以将每条记录插入表中,然后对新的数据库表类型进行硬编码引用,例如
DataTable translationDataTable = new DataTable("Translation");
translationDataTable.Columns.Add("Name", typeof(string));
translationDataTable.Columns.Add("Description", typeof(string));
translationDataTable.Columns.Add("Language", typeof(string));
foreach (Translation t in entityTranslations)
{
DataRow newRow = translationDataTable.NewRow();
newRow["Name"] = entityTranslations.Name;
newRow["Description"] = entityTranslations.Description;
newRow["Language"] = entityTranslations.Language;
translationDataTable.Rows.Add(newRow);
}
List<IDbDataParameter> parameters = new List<IDbDataParameter>
{
new SqlParameter("@Translations", SqlDbType.Structured)
{
TypeName = "dbo.TranslationTableType",
Value = translationDataTable
},
new SqlParameter("CountryCode", countryCode),
};
这是TypeName = "dbo.TranslationTableType",
我对 VS的看法
XmlSerializer xml = new XmlSerializer(typeof (List<Translation>));
using (MemoryStream memoryStream = new MemoryStream())
{
xml.Serialize(memoryStream, entityTranslations);
List<IDbDataParameter> parameters = new List<IDbDataParameter>();
parameters.Add(new SqlParameter("Translations", Encoding.UTF8.GetString(memoryStream.ToArray())));
parameters.Add(new SqlParameter("CountryCode", countryCode));
}
问题:当通过 XML 与结构表插入多行与许多小插入(并成为 .net 代码端事务的一部分)插入多行时,SQL Server 2016 的性能是否会受到影响?
解决方案
推荐阅读
- laravel - 如何从 laravel 中的控制器操作返回刀片组件
- apache-kafka - S3 kafka 连接状态 api 总是返回未找到状态码
- c# - 如何将 xml 对象反序列化回类列表
- google-search - Robot.txt 特定页面的规则
- python - 当我调用 pyautogui 命令时,tkinter 不断崩溃
- django - Django APP Heroku Log 检测重复请求
- powershell - 在 Windows 资源管理器中渲染 Powershell 结果
- c++ - 我试图实现合并排序,但无法找到我的代码的确切问题。程序没有显示错误,但我没有得到想要的输出
- time-complexity - 当实际时间复杂度是阶跃函数时,为什么二分搜索的时间复杂度为 O(log n)?
- arrays - 汇编语言索引寻址 (NASM)