0

Gridview コントロールを使用してオブジェクトを編集、更新、削除できるプロジェクトを作成しようとしていますが、新しいオブジェクトを保存するたびに dbclosed 例外エラーが発生しました。実際にエラーが発生した場所を見つけることができませんでした。私は DB4o プログラミングで .NET に非常に慣れていません。基本を学べる良いソースが見つからなかったので、参考文献も大歓迎です。前もって感謝します。

//ページロード

     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();




            }
4

1 に答える 1

0

1)コードを理解している場合は、IDを使用して患者を取得し、プロパティを更新して変更を保存する方がよいでしょう(作成および削除せずに)。

2)http://usefuldb4o.codeplex.com/を試すことができます。

このプロジェクトは、ASP.NETでの作業に焦点を当てています。ソースコードには、CRUD操作を使用したASP.NETの例があります(ソースコードフォルダーExamples / AspNetWebSolutions

このプロジェクトにはNugetパッケージもあり、実装例は次のとおりです。http: //nuget.org/packages/UsefulDB4OToWeb

于 2012-05-25T12:17:44.687 に答える