2011-08-01 3 views
1

내 SQLEXPRESS 데이터베이스 모두를 업데이트 할 linqdatasource를 사용하는 경우 데이터베이스에 저장된 최신 (업데이트) 버전을 검색하지 않습니다 확인 표시,하지만 난 내용을 검색하려고 할 때 수동으로 사용하고 있습니다 :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 }; 
} 

나는 업데이트 된 버전을 다시받습니다! 수동 쿼리를 수행 할 때 왜 이런 일이 발생하는지, 그리고 언제 어떻게 최신 버전의 데이터를 가져올 수 있습니까? '항상'및 'WhenChanged', dataclasses.dbml 파일에서 '업데이트 확인'옵션을 설정하려고했지만 작동하지 않는 것 ...

+0

모든 경로에서 SubmitChanges가 호출됩니까? LINQ는 DataContext 개체의 캐시에서 행을 전달합니다. 따라서 변경이 발생하는 모든 시나리오에서 SubmitChanges가 호출되지 않으면 예상 한대로 수정 된 데이터가 아닌 원본 데이터를 가져옵니다. – Josh

+0

linqdatasource를 통해 내용이 업데이트되므로 추측하겠습니다! 선택 쿼리 'select new {m.schemeID, m.assignmentName}'가 업데이트를 보는 반면, 단순히 'select m'을 사용하면 업데이트가 발생하지 않습니다. – Themos

+0

업데이트 된 내용이 잠시 후에 표시되거나 datacontext를 업데이트 할 때 나타나는 것처럼 보이지만 ... '지연된로드 됨'옵션이 false로 설정되었습니다 ... – Themos

답변

1

마침내 작동하도록, 나는 datacontext의 모든 영향을받는 열에 대해 자동 동기화 방법을 '항상'으로 수동 설정해야했습니다!

모든 도움을 주신 @Josh에게 다시 한 번 감사드립니다.