2017-10-04 61 views
2

我有兩個表即。 tblProduct and Brands,tblProduct包含: ProductId,ProductName,Quantity,Price,Entry_Date。 和品牌包含:ProductId,BrandID,BrandName,BrandDescription,DietType,ProductId(來自tbProduct的FK)。無法將值NULL插入到'ProductId'列'ProductDB.dbo.Brand'列中;

我使用LINQ和想插入這個數據插入按鈕點擊這兩個表,這裏的插入方法:

protected void BtnAdd_Click(object sender, EventArgs e) 
{ 
    tblProduct products = new tblProduct(); 

    using (ProductDataContext context = new ProductDataContext()) 
    { 
     try 
     { 
      tblProduct prod = new tblProduct(); 
      { 
       prod.ProductName = TxtProductName.Text; 
       prod.Quantity = Int32.Parse(TxtQuantity.Text); 
       prod.Price = Int32.Parse(TxtPrice.Text); 
       prod.Entry_Date = DateTime.Parse(TxtDate.Text); 
      }; 
      context.tblProducts.InsertOnSubmit(prod); 
      context.SubmitChanges(); 

      Label2.Text = "Product Inserted"; 

      Brand br = new Brand(); 
      { 
       br.BrandName = TxtBrandName.Text; 
       br.BrandDescription = TxtBrandDescription.Text; 
       br.DietType = TxtDietType.Text; 
      }; 

      prod.Brands.Add(br); 
      context.Brands.InsertOnSubmit(br); 
      context.SubmitChanges(); 
      Label1.Text = "Done"; 
     } 
     catch (Exception exe) 
     { 
      Label1.Text = exe.Message; 
     } 
    } 
} 

我想插入兩個表,但是插入命令只能在第一張桌子上(tblProducts),但沒有插入品牌表中的任何東西,我不確定這裏的問題似乎是什麼問題。 請注意BrandID和ProductId(在兩個表上)都設置爲自動增量。

+1

品牌表中的外鍵對產品表有限制嗎?如果是這樣,您需要將已插入產品表的產品ID包含在品牌表 – RH6

+0

@ RH6中,這要感謝您提前回應,是的,ProductId是品牌表中的外鍵,我也已設置自動遞增。你是說我應該包括像prod.ProductId = br.ProductId? –

+1

您需要從先前插入的產品表中檢索主鍵(productID),然後在插入到品牌表中時,外鍵必須與此匹配(假設它們爲1到1)。 編輯:本質我剛剛發佈的答案是 – RH6

回答

1

試試這個(注意產品ID)

    Brand br = new Brand(); 
        { 
         br.ProductId = prod.ProductId; 
         br.BrandName = TxtBrandName.Text; 
         br.BrandDescription = TxtBrandDescription.Text; 
         br.DietType = TxtDietType.Text; 
        }; 
+0

好的,我會嘗試這種方法謝謝你。 –

1

當你插入一條記錄到一個表的外鍵約束,記錄的外鍵值必須連接到它引用的主鍵。

所以將品牌記錄時,您將需要加入這一行:

br.ProductID = prod.ProductId; 

這將允許保持外鍵約束。

編輯:mike123打敗了我,但你明白了。

相關問題