将两个表中的数据插入一个c#

时间:2012-12-04 11:26:08

标签: c# asp.net sql-server insert

我有3张桌子。我创建一个任务并同时上传资源。数据保存在两个表中 - 一个用于任务信息,另一个用于资源。

我试图将两个表的主键插入第三个表。第一个表名为Tasktask_id为主键task_nametask_description。第二个是 - Resourceresource_id作为主键,resource_name。两个id都有自动增量选项,所以当我向表中输入数据时,我不会填充ID。

我想将task_idresource_id插入名为Task_resource的第三个表格中。它有一个主键task_resource_id(同样具有自动增量选项)。

问题是怎么做,因为我不知道id?

这样做的原因是一个任务可以有很多资源,在第三个表中我可以将它们组合起来,然后搜索它们(例如SELECT data from the other 2 tables WHERE task_id=1)。

我有一个asp.net Web应用程序和一个mssql数据库。我用c#。

我知道可能的解决方案是将名为task_id的列插入Resource表中,该表引用task_id中的Task

但话又如此,如何插入那个id,因为我不知道呢?

2 个答案:

答案 0 :(得分:2)

在第一个表上执行insert,然后从查询中返回scope_identity()。然后,当您插入第二个表时,您有ID吗?或者如果您使用的是LINQ

//create the object
Task task = new Task{

task_name = src.taskName,
task_description = src.taskDescription

}

context.Tasks.InsertOnSubmit(task);
context.SubmitChanges();

//do second insert
Int32 taskIDFromLastInsert = task.task_id;

Resource res = new Resource{

resource_name = scr.ResourceName,
task_id = taskIDFromLastInsert // optional if you want to change your structure

}

context.Resources.InsertOnSubmit(RES); context.SubmitChanges();

Int32 resourceIDFromLastInsert = resource_id;

如果你真的想插入第三张表

,现在你有两个ID

这是一种干净的方式来引用您的数据

插入后对数据运行查询。

答案 1 :(得分:1)

你应该使用

SET IDENTITY_INSERT