2015-03-09 3 views
0

У меня проблема с удалением из базы данных Db4o. В настоящий момент я могу хранить новые объекты и отображать их в представлении datagrid. Но по какой-то причине я не могу удалить объекты снова. Вот Linq, который я использую.Удаление в базе данных 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, поэтому не знаю много об этом.

+0

Я также попытался с db.Commit(); после удаления статута. –

+0

Почему downvote? Его спросили хорошо, и он предоставил исходный код того, что он пытался. – Scottie

ответ

0

Вы передаете неправильный объект в базу данных.

изменить код, чтобы что-то вроде:

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(); 
} 
Смежные вопросы