2017-10-04 18 views
2

私は2つのテーブルを持っています。 tblProductとブランド、tblProductには以下が含まれます: ProductId、ProductName、Quantity、Price、Entry_Date。 とBrandsには、ProductId、BrandID、BrandName、BrandDescription、DietType、ProductId(tbProductのFK)が含まれています。私は両方のテーブルに挿入しようとしているカラム 'ProductId'、テーブル 'ProductDB.dbo.Brand'に値NULLを挿入できません。

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; 
     } 
    } 
} 

が、insertコマンドのみ作品:私はLINQを使用して、ボタンをクリックしたときに、両方のテーブルにこのデータを挿入したいんだ

は、ここに挿入する方法です最初のテーブル(tblProducts)では、Brandsテーブルには何も挿入されませんが、私はここで問題と思われるものは確かではありません。 BrandIDとProductIDの両方(両方のテーブル)が自動インクリメントに設定されていることに注意してください。

+1

ブランド表の外来キーが製品表に制約がありますか?そうであれば、商品テーブルに挿入されたproductIDをブランドテーブルへの挿入に含める必要があります – RH6

+0

@ RH6早く応答してくれてありがとうございます。はい、ProductIdはBrandsテーブルの外部キーです自動増加。 prod.ProductId = br.ProductIdのようなものを含めるべきだと言っていますか? –

+1

これまでに挿入した製品テーブルからプライマリキー(productID)を取得してから、ブランドテーブルに挿入する際には、1対1であるとみなして外部キーを一致させる必要があります。 編集:私がちょうど投稿した答えは、 – RH6

答えて

1

あなたは外部キー制約をテーブルにレコードを挿入すると、レコードの外部キーの値は、それが参照している主キーに接続する必要があります

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

私はこのアプローチをお試しいただきますありがとうございます。 –

1

(ProductIdの点に注意してください)、これを試してみてください。

ブランドレコードを挿入するときに、あなたはこの行を含める必要があります:

br.ProductID = prod.ProductId; 

これは外部キー制約を維持することができるようになります。

編集:mike123は私にそれを打つが、あなたは考えを得る。

関連する問題