2015-03-04 4 views
1

Я использую базу данных, заполненную до заполнения. Когда приложение запускается, я копирую db из активов в isostore. лица:Windows Phone 8 существующая база данных InvalidCastException: Указанный приказ недействителен

[Table(Name = "NAMES")] 
public class NameItem: INotifyPropertyChanged, 
INotifyPropertyChanging { 
    public event PropertyChangedEventHandler PropertyChanged; 
    public event PropertyChangingEventHandler PropertyChanging; 

    private string _nameString; 
    private int _id; 

    [Column(IsPrimaryKey = true, IsDbGenerated = true, Name = "_id")] 
    public int NameId { 
     get { 
      return _id; 
     } 
     set { 
      if (value != _id) { 
       OnPropertyChanging("NameId"); 
       _id = value; 
       OnPropertyChanged("NameId"); 
      } 
     } 
    } 

    [Column(IsPrimaryKey = false, Name = "NAME_TEXT")] 
    public String NameString { 
     get { 
      return _nameString; 
     } 

     set { 
      if (_nameString != value) { 
       OnPropertyChanging("NameString"); 
       _nameString = value; 
       OnPropertyChanged("NameString"); 
      } 
     } 
    } 
} 

И вот я пытаюсь прочитать данные из БД:

using(var db = new MyDataContext("isostore:/Database/ff.sdf")) { 
    var allNameItems = db.NameItems.ToArray(); // exception on this line 
    try { 
     MessageBox.Show(allNameItems[0].NameString); 
    } catch (Exception ex) { 
     MessageBox.Show(ex.Message); 
    } 
} 

С помощью этого кода я получаю InvalidCastException, но db.NameItems.Count() работает.

ответ

0

Хорошо, я прочитал это question и нашел проблему, мое поле id в db было BigInt, а в Entity это было int. Я изменил его на long, и он сработал.

Смежные вопросы