c# - 一对多关系的 INSERT 语句

标签 c# sql webmatrix

所以我正在做一个项目来为我的游戏编目,但我遇到了一个问题。我有一个包含两个表的数据库,分割如下:

游戏_信息

  • gameId(PK) 是身份(自增)
  • 游戏价格
  • 姓名
  • 版本

游戏笔记

  • noteId(PK) 是Identity(自增)
  • 笔记
  • 记事日期
  • gameId(FK)

一个游戏可以有很多笔记,所以两个表之间存在一对多的关系,其中“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) 中。

任何人都可以帮助我解决这个问题或指出我可以阅读的文章吗?谢谢。

-更新- 使问题更清楚。

最佳答案

如果我对你的问题的理解是正确的,那么你正试图完成两件事:

  1. 获取Game_Information中新插入记录的gameId
  2. 在 Game_Notes 的以下插入语句中使用该 gameId

虽然有无数种方法可以做到这一点,但建议使用“输出”值。像这样的东西:

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/

相关文章:

sql - 如何在phinx中回滚

javascript - 在 Webmatrix 中的 JavaScript 文件中启用 jQuery Intellisense

asp.net - 在 ASP.NET 网页/WebMatrix 项目中启用输出缓存

c# - C#中如何同时读取和写入同一个文件

c# - 如何在 Realm 对象(更准确地说是 DateTime)中实现 Nullable 属性?

c# - 如何不在插入中使用 SCOPE_IDENTITY()

visual-studio-2010 - 在 Visual Studio 中使用 WebMatrix.Data 和 facebook 助手

c# - 使用 C# 解析结果中的 JSON 数据

C# 安卓 : Get Broadcast Receiver on a service?

sql - sql查询联接2个表并显示1列中的所有记录