2011-08-01 59 views
1

當使用的LinqDataSource來更新我的SQLEXPRESS數據庫的一切最新的(更新)版本顯示正常,但是當我嘗試檢索內容手動使用:LINQ到SQL不檢索存儲在數據庫中

public static IQueryable<MarkingScheme> listMarkingSchemes(string moduleID, string academicYear) 
{ 
    return 
     from m in feedbackDB.MarkingSchemes 
     where m.moduleID == moduleID && m.academicYear == academicYear 
     orderby m.schemeID descending 
     select m; 
} 

我找回了以前版本的數據!奇怪的是,當我只檢索同一表的特定部分,使用:

public static IQueryable listNames(string moduleID, string academicYear) 
{ 
    return 
     from m in feedbackDB.MarkingSchemes 
     where m.moduleID == moduleID && m.academicYear == academicYear 
     orderby m.schemeID descending 
     select new { m.schemeID, m.assignmentName }; 
} 

我找回更新的版本! 有沒有人知道爲什麼會發生這種情況,以及在進行手動查詢時如何獲得最新版本的數據?我試着在dataclasses.dbml文件中的「檢查更新」選項設置爲是「永遠」和「WhenChanged」,但它似乎沒有工作...

+0

SubmitChanges在每個路徑中被調用嗎? LINQ從DataContext對象的緩存中提供行。因此,如果在每次發生更改的情況下都不調用SubmitChanges,則會得到原始數據,而不是您所期望的修改後的數據。 – Josh

+0

內容通過linqdatasource更新,所以我假設是這樣!並且選擇性查詢'select new {m.schemeID,m.assignmentName}'看到更新並不奇怪,而使用簡單的'select m'則不會。 – Themos

+0

經過一段時間似乎顯示更新的內容,或者當我更新datacontext ...但延遲加載選項設置爲false ... – Themos

回答

1

我終於得到它的工作,我必須爲數據上下文中的所有受影響的列手動將自動同步方法設置爲「始終」!

再次感謝@Josh的全力幫助,非常感謝!