2015-10-05 74 views
-2

我寫了現在使用基於我想索姆條目添加到我的表如下EF型號代碼:異常時使用的SaveChanges()在實體框架

protected void cmdOk_Click(object sender, EventArgs eventArgs) 
     { 

       Validate(); 
       if (Page.IsValid) 
        using (var db = new KishModelContainer()) 
        { 
         EditId = Request["Id"].ChangeType<int>(0); 
         if (EditId == 0) 
         { 
          var obj = new Entities.Db.Salon(); 
          obj.Name = txtName.Text; 
          obj.Address = txtAddress.Text; 
          obj.Capacity = Convert.ToInt32(txtCapacity.Text); 
          obj.ServiceProviderId = txtProviderId.Text.ChangeType<int>(0); 

          db.Salons.Add(obj); 
          db.SaveChanges(); 
          var tb = new Entities.Db.Seat(); 
          for (int i = 1; i < Convert.ToUInt32(txtCapacity.Text);i++) 
          { 
           tb.SalonId = obj.Id; 
           db.Seats.Add(tb); 
           db.SaveChanges(); 
          } 
           DBUtils.AddOperationLog((CurrentUser)Session["currentUser"], "", "افزودن خدمت"); 
          Message.Info("successful operaton "); 
          Response.Redirect("AbstractServices.aspx", false); 

,但我有例外面臨FOR循環(線:db.SaveChanges())。 的例外是:

類型「System.Data.Entity.Infrastructure.DbUpdateException」的一個例外發生在EntityFramework.dll但在用戶代碼中沒有處理

其他信息:在更新時發生錯誤條目。詳情請參閱內部例外。

+4

什麼是內部異常? tb.SalonId中的 – DevilSuichiro

+0

,SalonId是否爲主鍵? – 2015-10-05 08:38:17

+0

您可以添加從內部異常鏈接找到的信息嗎? – Auguste

回答

0

我想你需要把var tb = new Entities.Db.Seat(); 裏面的循環。因爲目前您正試圖將同一對象添加到db.Seats,但每次都要更改其SalonId屬性。這不好

+0

沒有,但我爬不起來例外: 型「System.Data.Entity.Infrastructure.DbUpdateException」的異常出現在EntityFramework.dll但在用戶代碼中沒有處理 更多信息:更新條目時發生錯誤。詳情請參閱內部例外。 –

+0

這是一個好主意,在這裏發佈最內在的例外,讓我們得到一個更好的主意 –

+0

沒有內部異常的鏈接。現在當我運行面臨着不同的異常,但我沒有,T改變什麼 發生在EntityFramework.dll型「System.Data.Entity.Infrastructure.DbUpdateException」的一個例外,但在用戶代碼 其他沒有處理信息:更新條目時發生錯誤。詳情請參閱內部例外。 –

相關問題