1
다른 매개 변수와 함께 TableValueParameter (TVP)를 포함하는 매개 변수를 저장 프로 시저에 전달하는 데 올바른 Dapper 구문을 이해하는 데 어려움이 있습니다. 내 코드의 단순화 된 버전 :TableValueParameter를 포함하는 Dapper 저장 프로 시저
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# 코드 조각
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 코드 조각
--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....
대신 IEnumerable을를 전달하는, 당신은 DataTable의 유형을 제공 그냥 만들고 viewmodel.images를 사용하여 DataTable을 채울하고 명령의 매개 변수로 DataTable을 통과해야합니다. –
Aldo