如何在SQL中使用存储过程插入嵌套对象

红天鹅

我有如下的嵌套对象模型:

      public class Product
        {
         public List<ProductOffering> ProductOfferings { get; set; }
        }
      public class ProductOffering
        {
            public int OfferingId { get; set; }
            public string OfferingDescription { get; set; }
            public string OfferingType { get; set; }
            public List<OfferingPriceRegion> PriceRegions { get; set; }
        }

我要插入Product与列表沿着ProductOffering其具有再次名单OfferingPriceRegion在单个存储过程(SPInsertProduct用C#)。除了实体框架,什么是最好的方法?因为Product中的ProductOfferings可能数量很多,例如400。在这种情况下,实体框架可能需要更多时间来循环保存功能。请提出建议。

柬埔寨Mrinal

Dapper作为ADO.Net基于对象的映射器,最好的选择是使用TableValuedParameters,其中可以在一次调用中将所需的完整数据发送到数据库。

以下是要点:

  • Dapper将TVP视为 DataTable
  • 对于IEnumerable<T>DataTable,你可以使用System.Data.DatasetExtensions方法CopyToDataTable或有一个API的NuGet FastMember来达到同样的

注意事项:

  • 的列数,列名称及其顺序应与TVP完全相同DataTable,否则它将不起作用,并且错误不会提示问题,此映射与Json映射不同,后者不存在架构不匹配的问题

如果记录数量非常多,则可能需要分成多个记录,DataTables并使用Async-Await并发执行相同的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在存储过程中使用oracle对象类型?

如何在存储过程的动态SQL中使用LIKE?

如何在 SQL Server 存储过程中使用 if else

在SQL Server中使用存储过程插入select语句

如何在插入记录时防止使用存储过程进行SQL注入?

如何在 Javascript 中使用嵌套对象?

如何在Qt中使用输入参数调用SQL Server存储过程

如何在雪花中使用 Javascript 存储过程执行 SQL UDF 的输出?

如何在vb.net代码中使用SQL Server存储过程中的OUT参数

如何在T-SQL存储过程中使用可选参数?

如何在存储过程中使用sql查询停止重复数据?

SQL Server:如何在存储过程中使用数据库名称作为参数?

如何在 Pandas 中使用 sqlalchemy 执行具有多个日期参数的 sql 存储过程

如何在 Azure 存储过程中使用 SQL 中的变量

如何在SQL Server数据库中使用函数/存储过程实现以下目标

如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

如何在Windows窗体应用程序中使用存储过程访问SQL Server?

如何在T-SQL中使用存储过程创建文件

如何在SQL Server中使用TSQL Command跟踪存储过程的修改?

如何在使用多个集合的DocumentDB中使用存储过程

如何在存储过程中使用复合pk?

如何在Sails js中使用存储过程调用?

如何在存储过程 (Oracle) 中使用 SELECT 请求?

如何在存储过程中使用类似语法

如何在python中使用参数调用存储过程?

如何在SQLServer存储过程中使用case语句

如何在存储过程中使用openquery?

如何在Exec存储过程中使用Where子句

如何在实体框架中使用异步执行存储过程