2012-10-23 2 views
3

작은 데이터베이스 응용 프로그램에 Entity Framework 4를 사용하려고합니다. 다운로드 한 파일을 기록하기 위해 쓰고 있습니다. 응용 프로그램을 실행할 때 .SaveChanges() 메서드를 사용하기 전에 tableName.Add() 메서드 다음에 중단 점을 설정하고 엔티티에 저장된 데이터를 볼 수 있습니다. .SaveChanges() 메서드를 호출 한 후 또 다른 중단 점을 가지며 데이터베이스에 저장된 레코드가없는 것을 확인합니다. 나는 비슷한 질문을 많이 발견했지만, 나는 나의 특별한 문제에 대한 해결책을 찾지 못했다. 코드는 다음과 같습니다.Entity Framework 4 SaveChanges 메서드가 데이터베이스에 저장되지 않음

public void StartNewDownload(string FileID) 
    { 
     DateTime startTime = DateTime.Now; 

     FilesDBEntities db = new FilesDBEntities(); 
     int startedID = (from dr in db.tblDownloadResults 
         where dr.Value.Equals("Started") 
         select dr.ResultID).First(); 
     tblDownloads myDownload = new tblDownloads { FileID = FileID, StartDateTime = startTime, ResultID = startedID }; 
     db.tblDownloads.Add(myDownload); 
     db.SaveChanges(); 
    } 

아무 도움이됩니다.

감사합니다.

+1

"데이터베이스를 어떻게보아야합니까?" 앱에서 엔티티를 읽으려고 했습니까? 작동 했나요? 많은 사람들이 CodeFirst를 사용하여 잘못된 데이터베이스를보고 변경된 곳에서 CodeFirst가 데이터가 저장된 새 데이터베이스를 만든 곳을 많이 보았습니다. 앱에 저장된 내용을 읽을 수 있다면 데이터가 * 저장되었음을 의미합니다. – Pawel

+0

Pawel, 답장을 보내 주셔서 감사합니다. 나는 이것이 잠재적 인 원인임을 알 수있다. 이것을보고 다시보고합니다. 감사. –

+0

'((IObjectContext) ctx) .ObjectContext) .Connection.ConnectionString'을 사용하면 언제든지 연결 문자열을 얻을 수 있습니다.이 연결 문자열은 어떤 데이터베이스를 공격하는지 알려줍니다. – Pawel

답변

5

파블, 당신은 올바른 방향으로 나를 안내. 엔터티에 데이터가 있지만 데이터베이스에서 찾지 못한 데이터입니다. 그러나 귀하의 의견을 읽은 후 Visual Studio에서 프로그램을 실행하고 * .sdf 파일에 대한 작업을 모니터링하기 위해 프로세스 모니터를 사용했습니다. 이를 통해 솔루션을 빌드 할 때 bin \ Debug 폴더에 다른 데이터베이스 파일이 생성된다는 것을 알 수있었습니다. 데이터베이스 구축 동작 속성이 "콘텐트"로 설정된 것을 잊었습니다.

감사합니다.

0

SQL Server Profiler을 사용하면 엔티티 프레임 워크가 실제로 데이터베이스를 호출했는지 확인할 수 있습니다.

(이 도구는 SQL Server Express에 포함되지 않음)

+0

Edi, 답장을 보내 주셔서 감사 드리며 추가 정보를 포함시키지 않으 셨다니 죄송합니다. SQL Express 대신 SQL Compact를 사용하고 있습니다. 이 경우 SQL 프로파일 러가 여전히 유용할까요? –

관련 문제