1
我很難理解正確的Dapper語法,以便將包含TableValueParameter(TVP)以及其他參數的參數傳遞給存儲過程。我的代碼的簡化版本:Dapper存儲過程包括TableValueParameter
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,並通過數據表作爲命令的參數。 –
Aldo