2011-11-12 3 views
0

간단한 winforms 응용 프로그램이 있습니다. SQL Compact DB를 Linq와 함께 사용합니다. 클라이언트 이미지를 보유하고있는 이미지 열이 있습니다.SQL Compact - 새 열을 저장할 수 없습니다.

열 유형을 string으로 변경하여 이미지 경로를 유지하려고합니다. 필자는 열 유형을 nvarchar (500)로 변경했으며 그에 따라 모델을 변경했습니다.

이미지 열을 설정하지 않으면 생성 된 "SaveChanges"메서드를 사용하여 문제없이 데이터베이스에 개체를 저장할 수 있습니다.

이미지 필드를 설정하고 모든 것이 잘 작동하고 (홈 프리미엄 win.7) 내 컴퓨터에 을 저장하려고, 이미지 필드를 설정하고 클라이언트 시스템에서 (승리를 을 저장하려고합니다. XP 전문) 나는 다음과 같은 오류 얻을 : 나는 이전 열을 새 열 ("IMAGEPATH"를 생성) 삭제하려고했습니다

System.Data.EntityException: The underlying provider failed on Open. ---> System.Data.SqlServerCe.SqlCeException: The path is not valid. Check the directory for the database. [ Path = ..\DB\OpticControlMainDB.sdf ] 
    at System.Data.SqlServerCe.SqlCeConnection.ProcessResults(Int32 hr) 
    at System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent) 
    at System.Data.SqlServerCe.SqlCeConnection.Open() 
    at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, 

DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) 
    --- End of inner exception stack trace --- 
    at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) 
    at System.Data.EntityClient.EntityConnection.Open() 
    at System.Data.Objects.ObjectContext.EnsureConnection() 
    at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) 
    at System.Data.Objects.ObjectContext.SaveChanges() 
    at OpticControl.CustomerDetailsModel.SaveChanges() in <MY_PATH>\CustomerDetailsModel.cs:line 502 
    at OpticControl.CustomerDetailsPresenter.SaveCustomerPersonalDetails(Object sender, EventArgs args) in <MY_PATH>\CustomerDetailsPresenter.cs:line 149 

을 - 문제가 여전히 존재한다.

아이디어가 있으십니까?

답변

3

내가 무슨 일이 일어나고 있는지 알아 낸 것처럼 (이이 문제를 만나 다른 사람들에게 도움이 될 수있는) 것 같은데 응용 프로그램이 액세스하려고 시도하는 경로가 무엇인지 알아 내서 잘못되었는지 확인하십시오.

내 연결 문자열이 .. \ DB \ 구조의 경로를 가리키고 있습니다.

사용자로부터 이미지 경로를 가져올 때 FileDialog를 사용하고 있습니다. XP에서 (win.7이 아님)와 비슷해 보입니다.이 연결 고리는 연결 문자열을 사용할 때 대화 상자의 마지막 폴더에서 탐색을 시작합니다 (선택된 그림은 c : \ pics \ pic.jpg에 있습니다. 응용 프로그램은 경로 c : \에서 DB에 액세스합니다.

이 문제는 상대 경로가 아닌 절대 경로를 사용하여 유효하다는 것을 확인했습니다.

오 ...

0

클라이언트의 데이터베이스에 연결하고 있습니까? 귀하의 오류 메시지는 귀하가 제안하지 않은 것 같습니다.

The underlying provider failed on Open. ---> System.Data.SqlServerCe.SqlCeException: The path is not valid. Check the directory for the database. [ Path = ..\DB\OpticControlMainDB.sdf ]

물론 오류 메시지는 결코 거짓말을하지 않습니다 ... :-)하지만 클라이언트 컴퓨터에 지정된 위치에서도 데이터베이스를 찾지 못하는 것 같습니다.

내가 사용했습니다

프로세스 모니터 (시스 인 터널에서)에 :

Here's someone else who was getting this message and how they solved it.

관련 문제