2010-12-21 81 views
0

我正在使用三個表,但只能插入到兩個(一個被稱爲圖像,另一箇中間表)。他們都有關係。幫助LINQ到SQL插入

表:

ProductGroups--
ID
名稱

ProductGroup_Images--
ProductGroupID
ImagesID

圖像 -
圖像標識
路徑

下面的代碼能寫得更優雅嗎?

using (StoreDataContext db = new StoreDataContext()) 
     {     
      Image img = new Image 
      { 
       Path = "https://s3.amazonaws.com/mystore/images/public/" + FileUpload1.PostedFile.FileName,  
      }; 
      db.Images.InsertOnSubmit(img); 
      db.SubmitChanges(); 

      var pg = db.ProductGroups.Where(a => a.Name == txtName.Value).Select(b => b.ID).Single(); 

      ProductGroups_Image xref = new ProductGroups_Image 
      { 
       ProductGroupsID = pg, 
       ImagesID= img.ImagesID 
      }; 
      db.ProductGroups_Images.InsertOnSubmit(xref); 
      db.SubmitChanges(); 
     } 

回答

2

爲什麼要擔心的ID,當你有參考性。

Image img = new Image(); 
img.Path = @"https://s3.amazonaws.com/mystore/images/public/" 
    + FileUpload1.PostedFile.FileName; 

ProductGroups_Image xref = new ProductGroups_Image(); 
xref.Image = img; 

using (StoreDataContext db = new StoreDataContext()) 
{ 
    ProductGroup pg = db.ProductGroups.Where(a => a.Name == txtName.Value).Single(); 

    xref.ProductGroup = pg; 

    db.SubmitChanges(); 
} 
+0

真棒,我不知道你可以這樣做。爲什麼書籍和在線節目中的示例插入dataContext using語句內的示例並使用db.tableName.InsertOnsubmit? – 2010-12-22 02:24:41

0

你可以嘗試像下面...

ProductGroup temp = db.ProductGroups.Where(a => a.Name == txtName.Value.Select(a).Single(); 
temp.Images.Add(img); 
db.SubmitChanges;