所以我偶然發現了一件奇怪的事情。 我有一個測試,改變workingsite
的until
日至昨天,像這樣:Db上下文 - 多種用法
using (var db = new ApplicationDbContext())
{
var empFromDb = db.Employees.Include(x => x.WorkingSites).First(x => x.Id == _employeeId);
empFromDb.WorkingSites.Add(workingSiteToEnd);
db.SaveChanges();
//Act
ServiceFactory.CreateEmployeeService().EndWorkingSitePeriod(workingSiteToEnd);
//Assert
var workingSiteFromDb = db.WorkingSites.First(x => x.Id == workingSiteToEnd.Id);
Assert.AreEqual(DateTime.Now.AddDays(-1).Date, workingSiteFromDb.WorksUntil.Date);
}
在這個測試中我斷言失敗,until
沒有改變對象workingSiteFromDb
,但在我的代碼做變化它並保存對數據庫的更改。 note:我的數據庫沒有更新!我在數據庫中檢查了日期,並且正確地修改了日期。
現在我不知道發生了什麼,所以我在第一個savechanges
之後立即停止using
,並在撥打workingSiteFromDb
之前再打開它。
如果我這樣做,它的工作原理。
請注意,我在EndWorkingSitePeriod
方法中使用另一個using
。
我的數據庫如何更新,但只有當我使用第二個using
時對象纔會更新?
這是EndWorkingSitePeriod
方法:
public void EndWorkingSitePeriod(int workingSiteId)
{
using (var db = new ApplicationDbContext())
{
var workingSiteFromDb = db.WorkingSites.Include(x => x.Employee).First(x => x.Id == workingSiteId);
workingSiteFromDb.EndPeriod();
db.SaveChanges();
}
}
的workingSite.EndPeriod
僅設置UntilDate
到DateTime.Now.AddDays(-1)
您可以顯示EndWorkingSitePeriod()的代碼嗎? – 2014-12-19 08:53:57
已更新問題以顯示此信息 – Tikkes 2014-12-19 09:01:09