2012-05-25 4 views
0

Gridview 컨트롤을 사용하여 개체를 편집, 업데이트 및 삭제할 수있는 프로젝트를 만들고 있는데 새로운 개체를 저장할 때마다 예외가 발생했습니다. 사실 오류가있는 곳을 찾을 수 없었습니다. 나는 .NET에서 DB4o 프로그래밍을 처음 접했을 때, 기초를 배울 수있는 좋은 소스를 찾을 수 없었고, 따라서 모든 참조가 완전히 평가 될 것입니다. 미리 감사드립니다.Db4objects.Db4o.Ext.DatabaseClosedException Gridview에서 업데이트하는 동안

// Pageload

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


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

// (내가 코드를 undersand 경우, 어쩌면 ID를 사용하여 환자를 얻을 더

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) 업데이트, 속성 및 저장 변경 업데이트 생성 및 삭제하지 않음).

2) 시도해 볼 수 있습니다 http://usefuldb4o.codeplex.com/.

이 프로젝트는 ASP.NET 작업에 중점을 둡니다. 소스 코드는 CRUD 작업과 ASP.NET의 예를 가지고 (소스 코드 폴더를 예/AspNetWebSolutions)

이 프로젝트는 작은 예를 들어, 구현, 너무 Nuget 패키지가 있습니다 http://nuget.org/packages/UsefulDB4OToWeb

+0

나는 저장소없이 업데이트 된 값을 표시 할 수 있지만 ODS를 다시 사용하여 삭제 및 작성하지 않고 작업하려고했으나 라인 저장소 예외가 발생합니다. 웹 사이트 나 WinForms에서 편집/업데이트 할 수있는 툴을 개발하고 싶지만 특히 db4o에서는 에러 핸들링이 좋지 않습니다. –

+0

아마도 컨테이너/서버에 문제가 있습니다. Asp.net의 가장 좋은 옵션은 IObjectServer/IObjectContainer의 수명주기에 HttpModule (UsefulDB4O 같은)을 사용하는 것입니다. – pacoweb

관련 문제