2010-12-21 70 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;