[英]Dapper stored procedure that includes TableValueParameter
I'm having difficulty understanding the correct Dapper syntax to pass a parameters that includes a TableValueParameter(TVP) along with other parameters to a stored procedure. 我很难理解正确的Dapper语法,将包含TableValueParameter(TVP)的参数以及其他参数传递给存储过程。 A simplified version of my code:
我的代码的简化版本:
CLASS 类
public class GalleryViewModel
{
public string GalleryName { get; set; }
public string Category { get; set; }
public IEnumerable<Image> Images { get; set; }
}
public class Image
{
public string FileName { get; set; }
public int Order { get; set; }
}
C# Snippet C#Snippet
var param = new DynamicParameters();
param.Add("@Images", model.Images);//TVP
param.Add("@GalleryName", model.GalleryName);
param.Add("@Category", model.Category);
connection.Execute("CreateGallery", param, commandType: CommandType.StoredProcedure);
SQL Snippet SQL片段
--Create table type
CREATE TYPE GalleryImageType AS TABLE
(
FileName NVARCHAR(64),
Order INT
)
GO
CREATE PROCEDURE [dbo].[CreateGallery]
@Images GalleryImageType READONLY,
@GalleryName NVARCHAR(32),
@Category NVARCHAR(32)
AS
-- SPROC contents here....
Use an instance of DataTable instead of IEnumerable: 使用DataTable的实例而不是IEnumerable:
DataTable dt = new DataTable();
dt.Columns.Add("FileName");
dt.Columns.Add("Order");
foreach (var image in viewmodel.Images)
{
dt.Rows.Add(image.FileName, image.Order);
}
var param = new DynamicParameters();
param.Add("@Images", dt);//TVP
param.Add("@GalleryName", model.GalleryName);
param.Add("@Category", model.Category);
connection.Execute("CreateGallery", param, commandType: CommandType.StoredProcedure);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.