【问题标题】:How can I send a C# model list to a stored procedure in SQL?如何将 C# 模型列表发送到 SQL 中的存储过程?
【发布时间】:2018-10-12 22:16:21
【问题描述】:

我想发送此模型的列表并将其接收到存储过程 SQL 中:

public class Worker
{
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string LastName { get; set; }
}

列表:

List<Worker> worker = new List<Worker>({ 
    new Worker {
        Id = 1, 
        Name = "Lois", 
        LastName= "Smith"
    },
    new Worker {
        Id = 2, 
        Name = "Peter", 
        LastName= "Smith"
    }
});

存储过程: ?????????????

【问题讨论】:

  • 您可能最好使用处理单个模型(具有 Id、Name 和 LastName 参数)的存储过程,然后为列表中的每个模型调用该 SP
  • 好的,这是一个很好的答案,但我需要知道如何在 sp 上创建“每个”,你有什么例子吗?
  • 您可以将您的列表序列化为一个 json 字符串(使用 Newtonsoft.JSON)并将其传递给您的存储过程。然后根据您使用的 SQL 数据库类型,将有一些处理 json 对象的方法。这是一个示例:使用 sql server 我找到了stackoverflow.com/questions/41337584/…

标签: c# sql stored-procedures


【解决方案1】:

我会继续参考此页面。 https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-table-valued-parameters-database-engine?view=sql-server-2017。您可以创建一个用户定义的表类型并设置一个存储过程以将您的用户定义的表类型作为输入。

如果您使用的是 SqlCommand,那么您只需在调用 ExecuteNonQuery 之前在 comm.Parameters 下添加对象列表。请注意,对象的名称和类型必须与用户定义的表类型匹配。

我看到其他人建议单独进行通话。只要您可以管理连接,这通常很好。如果该操作在循环中插入大量数据,并且您调用一个过程一次添加记录 1,您可能会遇到连接问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2015-04-14
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多