2012-05-25 29 views
0

我想通過使用Gridview控件製作一個項目,我可以編輯,更新和刪除我的對象,每當我存儲新對象時,我都會收到dbclosed異常錯誤。其實我找不到錯誤。我在.NET中使用DB4o編程非常新,我無法找到任何可以學習基礎知識的優秀源代碼,因此任何引用都將完全讚賞。提前致謝。在Gridview中更新Db4objects.Db4o.Ext.DatabaseClosedException

//頁面加載

 Db4oService.OpenDB(); 
    using (var patientdbcontainer = Db4oService.PatientDBContainer) 
        { 
         var list = patientdbcontainer.Query<Patient>(typeof(Patient)).ToList<Patient>(); 


         GridView1.DataSource = list; 
         GridView1.DataBind(); 
        } 

//更新

public void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
     { 
      //var ID = new Guid((string)e.NewValues["ID"]); 

      // var Name = (string)e.NewValues["Name"]; 
      // var IMEI = long.Parse(e.NewValues["IMEI"].ToString()); 

      Patient updatedPatient = new Patient() 
      { 
       ID = new Guid((string)e.NewValues["ID"]), 
       IMEI =long.Parse(e.NewValues["IMEI"].ToString()), 
       Name = (string)e.NewValues["Name"] 
      }; 
      Patient deprecatedPatient; 
      using (var patientdbcontainer = Db4oService.PatientDBContainer) 
      { 

       deprecatedPatient = patientdbcontainer.Query<Patient>(typeof(Patient)).Where<Patient>(n => n.ID == (new Guid((string)e.NewValues["ID"]))).FirstOrDefault<Patient>(); 
       // deprecatedPatient.Name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text; 
       deprecatedPatient.ID = updatedPatient.ID; 
       deprecatedPatient.Name = updatedPatient.Name; 
       patientdbcontainer.Delete(deprecatedPatient); 

       patientdbcontainer.Store(updatedPatient); 
       patientdbcontainer.Commit(); 

       GridView1.EditIndex = -1; 
       GridView1.DataBind(); 




      } 
+0

你能後的堆棧跟蹤? – Gamlor

回答

0

1)如果我undersand你的代碼,也許是更好的使用id獲得病人,並更新了性能和存儲器的變化(無需創建和刪除)。

2) 您可以嘗試http://usefuldb4o.codeplex.com/

該項目專注於ASP.NET的工作。源代碼已經ASP.NET與CRUD操作的例子(源代碼文件夾例子/ AspNetWebSolutions

這個項目有一個NuGet包過,用一個小例子實現:http://nuget.org/packages/UsefulDB4OToWeb

+0

我試圖做到沒有刪除,並通過再次使用ODS創建,即使我可以在存儲之前顯示更新的值,行商店拋出異常。我想開發一個工具,我可以在網站或WinForms上編輯/更新,但特別是db4o的錯誤處理不好。 –

+0

也許是容器/服務器的問題。在Asp.net中最好的選擇是使用HttpModule(像UsefulDB4O)來處理IObjectServer/IObjectContainer的生命週期。 – pacoweb