LINQ выберите из SQL Server CE: указанное преобразование недопустимо - PullRequest
1 голос
/ 09 ноября 2011

Хорошо, во-первых, Привет всем, это мой первый пост.

Прямо сейчас к делу, я создал базу данных 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, float и т. Д. Количество соответствует ожидаемому. Затем я повторил это с отображением LINQ, и у него есть количество совпадений, поэтому я не думаю, что сопоставление неверно.

Редактировать 2: Я просто изменил приведенный выше код, чтобы выбрать только 1 поле, а не все, как это

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

Это работает нормально, но если я потом перехожу на другое поле

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

Я получаю ошибку. Так это тот, который играет? Если это так, в чем может быть проблема, поскольку она объявлена ​​как float как в базе данных SQL, так и в моих сопоставлениях

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Как объявляется tbRawData? Возможно, одно из определений полей не соответствует полю в базе данных.

1 голос
/ 09 ноября 2011

Похоже, что отображение между вашим классом и таблицей имеет свойство, сопоставленное с полем базы данных несовместимого типа, например, у вас есть свойство int, сопоставленное с полем nvarchar db.

...