我使用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