我正在使用EF4自追蹤實體(VS2010 Beta 2 CTP 2加新T4發生器)。但是,當我嘗試更新實體信息時,它不會按預期更新到數據庫。EF 4自追蹤實體無法按預期工作
我設置了2個服務呼叫。一個用於GetResource(int id),它返回一個資源對象。第二個調用是SaveResource(Resource res);這裏是代碼。
public Resource GetResource(int id)
{
using (var dc = new MyEntities())
{
return dc.Resources.Where(d => d.ResourceId == id).SingleOrDefault();
}
}
public void SaveResource(Resource res)
{
using (var dc = new MyEntities())
{
dc.Resources.ApplyChanges(res);
dc.SaveChanges();
// Nothing save to database.
}
}
//Windows Console Client Calls
var res = service.GetResource(1);
res.Description = "New Change"; // Not updating...
service.SaveResource(res);
// does not change anything.
在我看來,ChangeTracker.State總是顯示爲「未更改」。
這段代碼有什麼問題嗎?
服務是在同一層,但不同層。我的想法是將所有內容寫入同一層(不同層),但如果需要,可以稍後更改爲不同的層。在上面的例子中,ObjectContext超出了每個服務調用的範圍,所以STE沒有跟蹤。或STE只適用於WCF場景?在性能和擴展性方面,在上述場景中EF 4的最佳方法(POCO,STE或其他)是什麼? – ashraf 2010-01-30 18:23:10
跟蹤通過反序列化打開,因此儘管ObjectContext超出了範圍,但它仍處於同一層,並未打開。 – 2010-01-30 22:34:54