2009-11-13 91 views
0

我有表A和表B.
表B包含兩列,名稱和ID。 表A包含幾個列和一個指向B.ID的外鍵列,名爲B_IDLinq to SQL插入/選擇外部/主要記錄

在客戶端,我有要插入表A的所有數據,但B_ID除外。儘管我有B.Name。

使用鏈接到sql我需要根據名稱的值檢索表B中的ID。如果記錄不存在,我需要插入它並取回ID(這是一個標識列)。

現在,我有B.ID,然後我有通過在設計導入表A和B表A插入記錄

我已經建立了我的數據上下文類,我只是不知道如何在這裏寫入linq到sql語句。

回答

2

在構建數據上下文類,請務必先設置表A之間的關聯&表B.

下應該給你如何插入一個想法或更新的對象從表B用子表的關係。基本上,你檢查對象B是否存在。如果存在,則返回其ID。如果沒有,創建對象A,將其添加到對象B,然後插入對象B.通過創建對象B,LINQ to SQL將插入必要的信息到表A & B中。

DataContext db = new DataContext(); 

//Build object A 
ObjectTableA objA = new objA(); 
objA.prop1 = ... 
objA.prop2 = ... 

// Check to see if the object exists in Table B 
var query = from b in db.TableB 
     where b.Name == name 
     select b; 

ObjectTableB objb = query.FirstOrDefault(); 

//if objb does not exist then create and insert a new object B 
if (!objb) { 
objB = new ObjectTableB(); 
objB.Name = name; 

//add objA 
objB.propA = objA; 
db.TableB.InsertOnSubmit(objB); 
db.SubmitChanges(); 
} 

return objB.ID;