所以我正在做一个项目来对我的游戏进行编目,但我遇到了一个问题。我有一个包含两个表的数据库,其分割如下:
游戏信息
Game_Notes
一个游戏可以有多个注释,因此两个表之间存在一对多关系,其中“Game_Notes”中名为“gameId”的列是 FK/引用同名的“Game_Information”的主键。
现在在 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) 的数字反射(reflect)在“Game_Notes”中的 gameId(FK) 中。
任何人都可以帮助我或指出我可以阅读的文章?谢谢。
-更新-
使问题更清楚。
最佳答案
如果我理解你的问题是正确的,你正在努力完成两件事:
虽然有无数种方法可以做到这一点,但使用“输出”值将是一个建议。就像是:
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);
免责声明:我没有测试过任何这些,只是想为您指明正确的方向。
关于c# - 一对多关系的 INSERT 语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30853270/