2010-03-10 4 views
1

HI, J'essaie d'enregistrer des données dans mon fichier .sdf en utilisant un objet LinqToSql. J'ai une table comme suit: -en utilisant Linq To Sql pour enregistrer dans un SDF (fichier de base de données local) dans .Net

PersonId int not null pk 
forename nvarchar(4000) 
surname nvarchar(4000) 
Birthdate DateTime 
IsMale bit 
Biography nvarchar(4000) 

J'insertion d'une valeur tous les champs en dehors de la colonne personID (ensemble à l'identité, incrément).

J'utilise le code C# de

myLinqToSqlObject.Persons.InsertOnSubmit(thisPerson); 

puis

thisDataContext.SubmitChanges(); 

et je reçois l'exception de "Exception a été levée par la cible d'un appel." et une exception intérieure de juste "Varchar"

Est-ce que quelqu'un sait ce que je fais mal?

Merci

EDIT - Affichage du code pour thisPerson

thisPerson.Forename = thisDlg.Forename; 
thisPerson.Surname = thisDlg.Surname; 
thisPerson.Biography = thisDlg.Biography; 
thisPerson.IsMale = thisDlg.IsMale; 
thisPerson.BirthDate = thisDlg.BirthDate; 

Si tous les champs renvoient une valeur (pas de valeurs nulles)

+0

Pouvez-vous montrer le code que vous utilisez pour remplir thisPerson? – BFree

Répondre

1

Le DataContext a une propriété; Connexion Si vous lui assignez un StreamWriter pour écrire dans un fichier, ou un Console.Out attaché, il écrira le SQL généré par le contexte, et vous pourrez mieux déboguer la requête alors potentiellement ...

Aussi, pour comprendre ce qui se passe, avant de soumettre les modifications, appelez context.GetChangeSet(), et utilisez la fenêtre immédiate et le débogage VS pour voir ce qui se trouve dans cette collection (les insertions, mises à jour et suppressions sont effectuées).

Cela vous aidera à obtenir la réponse plus rapide ...

+0

Merci @Brian, comment puis-je l'écrire sur la console? – Ben

0

Pour créer un fichier SDF à l'aide DBML Visual Studio 2010 que, le ci-dessous ligne dans Visual Studio 2010 invite de commande que d'entrer et de l'exécuter.

SqlMetal.exe "EnterFilePath\CloudKase.sdf" /dbml:"EnterFilePath\CloudKase.dbml" 

De plus, ce fichier SDF et DBML est utilisé dans Visual Studio 2012 Facile d'accès et d'implémentation du code.

Happy Coding :)

Questions connexes