一直试图让以下查询工作几个小时,但我的想法已经用完了.任何人都可以找到我出错的地方.任何指针都非常赞赏.
CalEvents = (List<CalEvent>)session.CreateSQLQuery(@"
SELECT *
FROM dbo.tb_calendar_calEvents
INNER JOIN dbo.tb_calEvents
ON (dbo.tb_calendar_calEvents.calEventID = dbo.tb_calEvents.id)
WHERE dbo.tb_calendar_calEvents.calendarID = 'theCalID'"
)
.AddEntity(typeof(CalEvent))
.SetInt64("theCalID", cal.id);
Run Code Online (Sandbox Code Playgroud)
错误:
Kanpeki.NUnit.CalUserTest.Should_return_logged_in_user:System.ArgumentException:参数theCalID不存在作为[SELECT*FROM dbo.tb_calendar_calEvents INNER JOIN中的命名参数dbo.tb_calEvents ON(dbo.tb_calendar_calEvents.calEventID = dbo.tb_calEvents.id)WHERE dbo .tb_calendar_calEvents.calendarID ='theCalID']
"SELECT * FROM dbo.tb_calendar_calEvents INNER JOIN dbo.tb_calEvents ON (dbo.tb_calendar_calEvents.calEventID = dbo.tb_calEvents.id) WHERE dbo.tb_calendar_calEvents.calendarID = 'theCalID'"
Run Code Online (Sandbox Code Playgroud)
应该
"SELECT * FROM dbo.tb_calendar_calEvents INNER JOIN dbo.tb_calEvents ON (dbo.tb_calendar_calEvents.calEventID = dbo.tb_calEvents.id) WHERE dbo.tb_calendar_calEvents.calendarID = :theCalID"
Run Code Online (Sandbox Code Playgroud)
='theCalID'应写为=:theCalId; :theCalId即使在Native SQL查询中也使用命名参数.