使用Linq在Db4o数据库中删除

时间:2015-03-09 16:40:48

标签: c# linq db4o

从Db4o数据库中删除时遇到问题。目前,我可以存储新对象并将其显示在数据网格视图中。但由于某种原因,我无法再次删除对象。这是我正在使用的Linq。

public void DeleteStudent(int ssn)
    {
        var config = Db4oFactory.NewConfiguration();
        using (var db = Db4oFactory.OpenFile(config, "StudentDB"))
        {
            var query = (from StudentDB x in db
                         where x.SSN == ssn
                         select x);
            if (query != null)
            {
                db.Delete(query);
            }

        }
    }

我正在通过ssn获取要删除的对象。我已经尝试过调试并检查它是否为null而不是。我得到了正确的对象。

这是我正在使用的GUI部分。

private void btnDeleteStudent_Click(object sender, EventArgs e)
    {
        int ssn = Convert.ToInt32(txtSSN.Text);
        studentDB.DeleteStudent(ssn);

        gridStudents.DataSource = studentDB.GetAllStudents();
        ClearBoxes(this);
    }

我从文本框中获取ssn并在单击删除按钮时将其作为参数提供。之后我正在刷新gridview。

希望你们中的一个可以提供帮助!我是Db4o的新手,所以不太了解它。

1 个答案:

答案 0 :(得分:0)

您将错误的对象传递给db。

将您的代码更改为:

using (var db = Db4oFactory.OpenFile(config, "StudentDB"))
{
    var query = (from StudentDB x in db
                 where x.SSN == ssn
                 select x).SingleOrDefault();

     if (query != null)
     {
        db.Delete(query);
     }
     db.Commit();
}