所以我正在开发一个项目来编目我的游戏,我遇到了一个问题。我有一个包含两个表的数据库,如下所示:
Game_Information
Game_Notes
一个游戏可以有很多音符,因此两个表之间存在一对多关系,其中“Game_Notes”中名为“gameId”的列是FK /引用同名“Game_Information”的主键。 / p>
现在在Webmatrix中,我编写了一个页面,可以让我输入游戏的价格,名称和版本。在同一页面中,我还可以添加关于游戏的注释。在帖子上,页面从文本框中获取信息并尝试执行以下操作:
db.Execute("INSERT INTO Game_Information (gamePrice, name, edition) VALUES (@0, @1, @2)", gamePrice, name, edition);
db.Execute("INSERT INTO Game_Notes(notes, noteDate) VALUES (@0, @1)", notes, noteDate);
现在这可以工作并将信息放在正确的表中,但它将“Game_Notes”中的gameId(FK)留空。
我想要的是“Game_Information”中分配给gameId(PK)的数字反映在“Game_Notes”中的gameId(FK)中。
任何人都可以帮我这个或指向我能读到的文章吗?感谢。
-Update- 让问题更加明确。
答案 0 :(得分:4)
如果我理解你的问题,那么你就是想要完成两件事:
虽然有无数种方法可以做到这一点,但使用“输出”值将是一个建议。类似的东西:
var id = db.QueryValue("INSERT INTO Game_Information (gamePrice, name, edition) output Inserted.gameId VALUES (@0, @1, @2)", gamePrice, name, edition);
查看一些帖子以获取更多相关信息:Sql Server return the value of identity column after insert statement
然后,在以下语句中使用该id:
db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", id, notes, noteDate);
免责声明:我没有对此进行过任何测试,只是试着指出正确的方向。
答案 1 :(得分:0)
您需要在第二个db.execute语句中包含gameId
db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", gameId, notes, noteDate);