C# 使用Linq在Db4o数据库中删除
我在从Db4o数据库中删除时遇到问题。目前,我可以存储新对象并在datagrid视图中显示它们。但由于某些原因,我无法再次删除对象。这是我正在使用的LinqC# 使用Linq在Db4o数据库中删除,c#,linq,db4o,C#,Linq,Db4o,我在从Db4o数据库中删除时遇到问题。目前,我可以存储新对象并在datagrid视图中显示它们。但由于某些原因,我无法再次删除对象。这是我正在使用的Linq public void DeleteStudent(int ssn) { var config = Db4oFactory.NewConfiguration(); using (var db = Db4oFactory.OpenFile(config, "StudentDB")) {
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);
}
}
}
private void btnDeleteStudent_Click(object sender, EventArgs e)
{
int ssn = Convert.ToInt32(txtSSN.Text);
studentDB.DeleteStudent(ssn);
gridStudents.DataSource = studentDB.GetAllStudents();
ClearBoxes(this);
}
我正在获取要由ssn删除的对象。我已经尝试过调试并检查它是否为null,以及它是否为。我得到了正确的目标
这是我正在使用的GUI部分
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);
}
}
}
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新手,所以对它了解不多。您将错误的对象传递给了数据库 将代码更改为类似以下内容:
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();
}
我还尝试了db.Commit();在删除声明之后,为什么要投否决票?有人问得很好,他提供了他尝试的源代码。