2011-11-09 4 views
1

먼저 Ok, 모든 사람이 내 첫 번째 게시물입니다.LINQ SQL Server CE에서 선택 : 지정된 캐스트가 유효하지 않습니다.

지금은 SQLCE 데이터베이스를 만들고 데이터 컨텍스트와 모든 매핑을 만들고 데이터로드로 데이터베이스를 채 웁니다. 지금까지는 그렇게 좋았습니다. 이제 데이터를 가져 오려면 문제가 발생합니다. 내가 캐스트를 지정받을 것을 실행하는 데 데이터

var codes = (from c in App.BonusDatabase.tbRawData 
      select c).ToList(); 

에 대한

코드가 유효하지 않습니다. 나는 어딘가에서 가치가 없다고 추측합니다. 가치가 무엇인지 어떻게 알 수 있습니까?

at System.Data.SqlServerCe.SqlCeDataReader.GetFloat(Int32 ordinal) 
at Read_RAW(ObjectMaterializer`1) 
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() 
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
at BAT.Bonus.BonusRun(Int32 Week) in Bonus.cs:line 36 
at BAT.Bonus.BonusRun() in Bonus.cs:line 25 
at BAT.winMain.worker_DoWork(Object sender, DoWorkEventArgs e) in winMain.xaml.cs:line 91 
at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) 
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) 

편집 : 속임수로 좋아 나는 SQL은 다른 프로그램에 테이블 쿼리를 만들 복사가 나는 등 INT, 플로트, 카운트가 예상대로했다 얼마나 많은 시간을 계산되었다. 그런 다음 LINQ 매핑을 사용하여이 작업을 반복했는데 일치하는 개수가 있으므로 매핑이 잘못되었다고 생각하지 않습니다.

편집 2 : 난 그냥 그렇게

var codes = (from c in App.BonusDatabase.tbRawData 
     select c.CODE).ToList(); 

이 잘 작동처럼 단지 한 분야가 아닌 모든 것을 선택하기 위해 위의 코드를 수정하지만 난 다음 다른 필드

var codes = (from c in App.BonusDatabase.tbRawData 
     select c.PPH).ToList(); 

I로 변경하는 경우 오류가 발생했습니다. 이게 바로 연주되는 것입니까? 그렇다면 SQL 데이터베이스와 매핑에서 float로 선언 된 것과 같은 문제가있을 수 있습니다.

답변

1

클래스와 테이블 간의 매핑에 호환되지 않는 유형의 데이터베이스 필드에 매핑 된 속성이있는 것 같습니다. nvarchar db 필드에 매핑 된 int 속성이 있습니다.

+0

hhhhhhmmmmmm 내가보기에는 테이블이 100 개가 넘는 열을 찾으려고하면 성가 시게됩니다. – Gazlar

1

tbRawData는 어떻게 선언됩니까? 필드 정의 중 하나가 데이터베이스의 필드와 일치하지 않을 수 있습니다.

+0

실제 데이터베이스에 데이터를 채울 때 오류가 없었습니까? 즉 잘못 매핑 된 경우 문자열을 Int 필드에 넣으려고했습니다. – Gazlar

+0

동일한 데이터 클래스로 데이터베이스를 채웠습니까? 아니면 다른 도구로 채웠습니까? – Fischermaen

+0

같은. 데이터는 CSV 파일에서 가져 왔습니다. 테스트로서 나는 첫 번째 행/행을 제외한 모든 데이터를 csv 파일에서 제거했습니다. 그런 다음 SQLCE 데이터베이스에서 모든 데이터를 지우고 한 행으로 다시 채 웁니다. 이제 코드를 실행할 때 문제가 발생하지 않습니다. 문제를 추측하는 것은 데이터베이스를 채우는 것과 더 관련이 있습니다. – Gazlar

관련 문제