带输出子句的插入语句

Insert statement with Output Clause

我有以下两个table:

Game_Information

gameId(PK) Is Identity(auto-increments)
gamePrice
name
edition
date

Game_Notes

noteId(PK) Is Identity(auto-increments)
notes
noteDate
gameId(FK)

我目前正尝试在 WebMatrix 中编写一个 cshtml 页面,这将允许我在两个 table 中添加有关我的游戏 collection 的信息,但我无法将 gameId 获取到在两个 table 之间匹配,因此,多个注释引用一个游戏。

我尝试了以下方法:

var id = db.Execute("INSERT INTO Game_Information (gamePrice, name, edition, addedDate) output Inserted.gameId VALUES (@0, @1, @2, @4)", gamePrice, name, edition, date); 

db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", id, notes, noteDate);

将信息放入所需的列,但 "gameId" 插入 Game_Notes 始终默认为“1”,而不是新插入游戏的正确 ID。

所以我尝试了以下方法:

db.Execute("INSERT INTO Game_Information (gamePrice, name, edition) output Inserted.gameId, Inserted.date INTO Game_Notes(gameId, noteDate) VALUES (@0, @1, @2)", gamePrice, name, edition); 

这会将正确的 ID 插入 "gameId",因此两个 table 之间存在匹配项,但现在我不知道如何将 "notes" 变量放入其中同一行。进行第二次插入显然不可行,并且在 table 的最后一行进行更新似乎不是一个明智的主意。

有人对我在这里可以做什么有什么建议吗?我在考虑重组 Insert 以适应 Notes 变量是关键,但我一直在碰壁。

如我所说Database.Execute 方法 returns 受 SQL statement 影响的记录数。因此,您插入一行并得到 1 作为结果。

The Execute method is used to perform non-query commands on a database, such as the SQL Drop, Create, Delete, Update, and Insert commands. https://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute(v=vs.111).aspx

您需要 Database.QueryValue 方法来执行 SQL 查询,结果 returns 单个标量值。

var id = db.QueryValue(...