C# 一对多关系的INSERT语句
所以我正在做一个项目,对我的游戏进行分类,我遇到了一个问题。我有一个DB,其中有两个表,细分如下: 游戏信息C# 一对多关系的INSERT语句,c#,sql,webmatrix,C#,Sql,Webmatrix,所以我正在做一个项目,对我的游戏进行分类,我遇到了一个问题。我有一个DB,其中有两个表,细分如下: 游戏信息 玩家ID(PK)是身份(自动递增) 游戏价格 名字 版本 游戏注释 noteId(PK)是标识(自动递增) 注释 注日期 配子ID(FK) 一个游戏可以有多个注释,因此两个表之间存在一对多关系,其中“game_notes”中称为“gameId”的列是FK/以相同的名称引用“game_Information”的主键 现在在Webmatrix中,我编写了一个页面,可以输入游戏的价格、
- 玩家ID(PK)是身份(自动递增)
- 游戏价格
- 名字
- 版本
- noteId(PK)是标识(自动递增)
- 注释
- 注日期
- 配子ID(FK)
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_信息”中分配给gameId(PK)的数字反映在“Game_注释”中的gameId(FK)中
有人能帮我做这件事,或者指向我能读的文章吗?谢谢
-更新-
使问题更清楚。您需要在第二条db.execute语句中包含
gameId
db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", gameId, notes, noteDate);
如果我没弄错你的问题,你想完成两件事:
var id = db.QueryValue("INSERT INTO Game_Information (gamePrice, name, edition) output Inserted.gameId VALUES (@0, @1, @2)", gamePrice, name, edition);
有关这方面的更多信息,请查看一些帖子:
然后,在以下语句中使用该id:
db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", id, notes, noteDate);
免责声明:我没有测试过这一切,只是想给你指出正确的方向。我犯了一个错误。用于键入“gamePrice”而不是“gameId”。gameId是一个身份。人的大脑今天是油炸的。你们应该编辑你们的问题,我不再按照你们想要的。更新的问题,让它清楚。抱歉造成混淆。GameID应该是
Game\u Information
中的标识,但在Game\u Notes
中是外键。首先,您应该创建存储过程,然后使用scope\u identity()将GameID插入GameNotes感谢帮助。尝试了您的代码,虽然它只是在“Game_Notes”的所有条目中添加了“1”,但这是一个很好的开始。将db.Execute更改为db.QueryValue可以解决“1”的问题。