2011-08-01 32 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的全力帮助,非常感谢!