2010-05-18 6 views
1

J'ai créé une base de données et un dbml dans Visual Studio 2010 en utilisant ses assistants. Tout fonctionnait bien jusqu'à ce que je vérifie les données des tables (également dans l'explorateur de serveur de Visual Studio) et aucune de mes mises à jour étaient là.LinqToSQL ne met pas à jour la base de données

using (var context = new CenasDataContext()) 
{ 
    context.Log = Console.Out; 
    context.Cenas.InsertOnSubmit(new Cena() { id = 1}); 
    context.SubmitChanges(); 
} 

Ceci est le code que j'utilise pour mettre à jour ma base de données. À ce stade, ma base de données a une table avec un champ (PK) nommé ID.

** INSERT INTO [DBO] .Cenas VALUES (@ p0) - @ p0: Int d'entrée (taille = -1; Prec = 0; Echelle = 0) [1] - Contexte: SqlProvider (SQL2008) Modèle: AttributedMetaModel Construire: 4.0.30319.1 **

Ceci est lOG de l'exécution (imprimé le journal de contexte dans la console).

Le problème que j'ai est que ces mises à jour ne sont pas persistantes dans la base de données. Je veux dire que quand je demande ma base de données (explorateur de serveur de studio visuel -> nouvelle requête) je vois la table est vide, chaque fois. J'utilise un fichier de base de données SQL Server (.mdf).

EDIT (1): fenêtre immédiate résultat

context.GetChangeSet() 
{Inserts: 1, Deletes: 0, Updates: 0} 
    Deletes: Count = 0 
    Inserts: Count = 1 
    Updates: Count = 0 
context.GetChangeSet().Inserts 
Count = 1 
    [0]: {DBTest.Cena} 

Répondre

0

Si vous construisez un DataContext sans arguments, il récupèrera sa chaîne de connexion à partir de votre fichier App.Config ou Web.Config. Ouvrez celui qui s'applique et vérifiez qu'il pointe vers la même base de données.

+0

Oui, il pointe vers le bon endroit;) – codegarten

+0

Je suppose que vous aviez raison. Le problème était que l'assistant créait le fichier LinqToSql (dbml) avec le DataContext lisant le fichier Settings.settings et non le App.config. Donc j'étais sûr qu'il accédait à la bonne base de données mais ce n'était pas le cas. Je ne sais même pas ce qu'il faisait << Note à moi-même: ne faites pas confiance aux sorciers. – codegarten

0

Mettez un point d'arrêt sur context.SubmitChanges(); et dans votre fenêtre immédiate dans VS, faites:

context.GetChangeSet(); 

Il existe une propriété inserts et il doit avoir un enregistrement. Cela aidera à dire si c'est la file d'attente d'un insert.

HTH.

+0

Les résultats sont dans l'OP. – codegarten

+0

Merci, j'ai posté avant le montage. –

Questions connexes