J'ai une question plus profonde concernant la fonctionnalité de débogage de Linq à Sql SubmitChanges() Fonction. Je souhaite enregistrer un enregistrement dans une table d'une base de données localement mise en cache (localdbcache: serveur SqlExpress 2008 client SqlCE). Avant d'appeler SubmitChanges, je peux trouver le nouvel élément via DataContext.GetChangeSet(). Après avoir appelé Submit Changes, les éléments à insérer ont été supprimés du ChangeSet. (C'est ce que cette fonction est supposée faire.) Il n'y a pas de changement de conflit et pas d'erreur dans la sortie du journal de la base de données. Aucune exception du tout. Le nombre de tables reste à la même valeur.SubmitChanges ne sauvegarde pas, mais supprime les insertions du jeu de modifications, sans erreurs
if ((e.Parameter == null) ||
(!e.Parameter.GetType().Equals(typeof(LibDB.Client.Vehicles))))
{
return;
}
LibDB.Client.Vehicles tmp = e.Parameter as LibDB.Client.Vehicles;
try
{
ChangeSet cs = this._dc.GetChangeSet();
if ((tmp == null) || (this._dc == null)) return;
if (this._dc.Vehicles.Where(veh => veh.Vin == tmp.Vin).Count() == 0)
this._dc.Vehicles.InsertOnSubmit(tmp);
else if (this._dc.Vehicles.Where(veh => veh.Vin == tmp.Vin).Count() == 1)
this._dc.Vehicles.Attach(tmp, true);
else
return;
using (TransactionScope ts = new TransactionScope())
{
try
{
this._dc.SubmitChanges();
//this._dc.Refresh(RefreshMode.OverwriteCurrentValues,
// this._dc.Vehicles);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
if (this._dc.Vehicles.Where(veh => veh.Vin == tmp.Vin).Count() == 1)
MessageBox.Show("Vehicle not saved.");
this.vehSelector.ResetLayout();
}
Je serais reconnaissant de toute l'aide que je suis perdre espoir de trouver une erreur, Merci à l'avance Winston
Oui J'ai une clé primaire, c'est une clé primaire guidée manuellement sans définir l'association à "IsDbGenerated" car j'utilise un fichier XML de mappage. –