2009-11-04 6 views
0

J'ai implémenté un petit service Windows qui s'exécute toutes les 9 minutes et écrit les données qui arrivent à la base de données via un service web.LinQ to SQL: InvalidOperationException dans un service Windows

Ce qu'il faut faire le travail db j'utiliser LINQ to SQL

using (var db = new DataClasses1DataContext()) 
      { 
       var currentWeather = this.GetWeatherData(); 

       //////TODO Add the data correct 

       var newEntry = new WeatherData() 
       { 
        test = currentWeather.dateGenerated.ToShortTimeString() 
       }; 

       //var test = db.WeatherDatas.First(); 

       db.WeatherDatas.InsertOnSubmit(newEntry); // this throws Invalid Operation Exception 
       db.SubmitChanges(); 
      } 

Pourquoi faut-il jeter cette exception? le même bloc de code dans un programm console fonctionne bien

alt text http://img687.imageshack.us/img687/7588/unbenanntxb.png

+0

Que dit l'exception? – liggett78

+0

rien .. seule cette exception est affectée – Markus

+0

Il devrait y avoir un message (regardez l'exception interne aussi). Veuillez attacher le débogueur au service, définir un point d'arrêt et parcourir votre code. – liggett78

Répondre

1

Avez-vous mis en place la chaîne de connexion dans app.config correctement? IIRC, le constructeur par défaut sur un L2S DataContext lit la chaîne de connexion à partir du fichier de configuration. Si la chaîne de connexion pointe vers la mauvaise base de données (ou une base inexistante), vous pouvez très bien recevoir une exception.

Cela pourrait également expliquer pourquoi ce morceau de code fonctionne lorsqu'il est exécuté dans un contexte différent.

+0

c'est ... ma chère la clé primaire a été perdue dans le datacontext du service ... merde de merde – Markus