我有3张桌子。我创建一个任务并同时上传资源。数据保存在两个表中 - 一个用于任务信息,另一个用于资源。
我试图将两个表的主键插入第三个表。第一个表名为Task
,task_id
为主键task_name
和task_description
。第二个是 - Resource
,resource_id
作为主键,resource_name
。两个id都有自动增量选项,所以当我向表中输入数据时,我不会填充ID。
我想将task_id
和resource_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,因为我不知道呢?
答案 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)
你应该使用