2012-12-04 26 views
0

我有3個表。我創建一個任務並同時上傳一個資源。數據保存在兩個表中 - 一個用於任務信息,一個用於資源。從兩個表插入數據到一個c#

我想將兩個表的主鍵插入到第三個表中。第一個表格被稱爲Task,並且具有task_id作爲主鍵,task_nametask_description。第二個是 - Resource,並將resource_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表它引用Tasktask_id

但是再次,如何插入該ID,因爲我不知道它?

+1

在第一個表上執行插入操作,然後從查詢中返回scope_identity()。那麼當你插入第二張表時你有ID?在插入運行對數據 – CR41G14

+1

的查詢後,您可以在資源表上寫入觸發器,該表將在第三個表中輸入數據 –

回答

2

請在第一個表中插入,然後從該查詢返回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;

你現在有兩個編號的,如果你真的想要插入到第三個表

這是引用數據

插件運行對數據查詢後清潔方式。

+0

謝謝!這解決了我的問題。 – Apostrofix

相關問題