DbContext更改不会在数据库中保留,但在调试时可用

时间:2014-03-06 22:18:08

标签: c# sql-server wpf entity-framework dbcontext

我使用SQL Server compact和EF 6.0实现了一个简单的WPF应用程序。当我调试应用程序时,我可以正确检索和更新记录(我在调试时检查代码中的值),数据正确显示在GUI中。

但是如果我在数据库上执行查询(即使应用程序仍在运行),也不会显示任何更改或新记录。似乎新数据以某种方式保存在内存中而不是存储到数据库中。 这可能是我在调试时看到编辑或新记录的原因,但没有任何东西有效地存储到数据库中?

在我用来检索/保存记录的代码下面:

    private void GetPaziente(int Id)
    {
         using (var db = new DatabaseAccess())
         {
             /* The retrieved records here in the code have correct changes */
             var paz = db.Pazienti.GetByExpression(p => p.ID == Id).FirstOrDefault();
             CurrentPatientViewModel.Paziente = paz;
         }
    }

    private void SavePaziente ()
    {
            using (var db = new DatabaseAccess())
            {
                var currentPatient = CurrentPatientViewModel.Paziente;
                if (currentPatient.ID == 0)
                {
                    db.Pazienti.Add(currentPatient);
                }
                else
                {
                    db.Pazienti.Update(currentPatient);
                }

                db.Save();
            }
    } 

DataAccess类是:

    public class DatabaseAccess : IDisposable
    {
    private LocalDatabaseEntities _databaseContext = new LocalDatabaseEntities();

    public IGenericDataRepository<Paziente> Pazienti
    {
        get { return new Repository<Paziente>(_databaseContext); }
    }

    public DatabaseAccess()
    {
        if (_databaseContext.Database.Connection.State == ConnectionState.Closed)
        {
            _databaseContext.Database.Connection.Open();
        }
    }

    public void Save()
    {
        _databaseContext.SaveChanges();
    }

    public void Dispose()
    {
        _databaseContext.Dispose();
        _databaseContext = null;
    }
}

修改

我的问题与以下讨论的相同:this question

0 个答案:

没有答案