【发布时间】:2020-08-26 20:11:16
【问题描述】:
对于下面显示的代码,我收到以下错误消息。
*** 错误 ***
使用多映射 API 时,请确保设置 splitOn 参数,如果 您有除 Id 以外的键(参数“splitOn”)
据我了解,我正在传递 splitOn 参数,我是否遗漏了一些明显的东西?
代码
using (var connection = new Microsoft.Data.SqlClient.SqlConnection(connectionString))
{
connection.Open();
LookupTables = connection.Query<LookupTable, List<LookupValue>, LookupTable>("exec [lookups].[SelAllLookupTable]",
(lookuptable, lookupvalue) => {
lookuptable.LookUpValues = lookupvalue.ToList<LookupValue>();
return lookuptable;
}, splitOn: "LookupValueID").ToList();
}
更新
存储的过程代码
ALTER PROCEDURE [lookups].[SelAllLookupTable]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT lt.[LookupTableID],
lt.[GUID],
lt.[CreatedBy],
lt.[CreatedOn],
lt.[UpdatedBy],
lt.[UpdatedOn],
lt.[ChangeReason],
lt.[Name],
lt.[Description],
lv.[LookupValueID],
lv.[LookupTableID],
lv.[GUID],
lv.[CreatedBy],
lv.[CreatedOn],
lv.[UpdatedBy],
lv.[UpdatedOn],
lv.[ChangeReason],
lv.[Description],
lv.[DisplayOrderNo]
FROM lookups.LookupTable lt
LEFT JOIN lookups.LookupValue lv ON lt.LookupTableID = lv.LookupTableID
END
【问题讨论】:
-
能否添加存储过程的SQL代码?
-
@Steve 我已经添加了存储的过程代码,谢谢
-
我会尝试添加字段名称而不是 * 并且您只需要 splitOn 参数中连接表的 ID LookupTableID
-
感谢您稍微移动了代码,我现在得到了结果,虽然我期待 1 个包含 2 个查找值的列表的查找表,但我是 2 个没有值的查找表
标签: .net asp.net-mvc dapper