2009-10-30 4 views
0

J'ai une base de données que j'ai restaurée sur SqlExpress à partir d'un fichier bak qui se trouvait sur mon instance SQL Server Pro. J'utilise Linq pour interagir avec la base de données et je suis capable d'interroger et de mettre à jour certaines de mes tables (je n'ai pas essayé toutes). Cependant, j'ai au moins une table qui n'acceptera aucun type de mise à jour (ma table UserAddress). Si j'exécute cette requêteLa table Sql Server n'est pas mise à jour avec LINQ

  TestDataContext td = new TestDataContext(); 
      UserAddress ua = (from u in td.UserAddresses 
           where u.UserID == 56 
           select u).Single(); 
      ua.Address1 = "ffffffffffffuuuuuuuuuuu"; 
      td.SubmitChanges(); 

rien ne se passe. Aucun texte engagé dans la base de données, aucune exception, rien. Ceci est ma chaîne de connexion (Source de données = SNEE \ SQLEXPRESS; Initial Catalog = UsersDatabase; Integrated Security = True) bien que je l'ai essayé avec l'authentification SQL et ai reçu le même résultat. Est-ce que quelqu'un d'autre a déjà vécu quelque chose comme ça? Si oui, qu'avez-vous fait pour le faire fonctionner? Après avoir creusé dans le desginer j'ai remarqué quelque chose d'étrange. La classe d'adresse ressemble à ce

[Table(Name="dbo.UserAddress")] 
public partial class UserAddress 

cependant ma classe utilisateur ressemble à ceci

[Table(Name="dbo.User")] 
public partial class User: INotifyPropertyChanging, INotifyPropertyChanged 

J'ai aussi remarqué que la méthode Extensibilité Les définitions sont définis pour l'utilisateur, mais pas pour UserAddress. Ce qui donne? Je suis sûr que c'est la racine de mon problème, mais pourquoi cela s'est-il produit? J'ai essayé de créer un datacontext de test et de faire glisser la table dessus encore une fois et il ne créera toujours pas le code nécessaire.

Répondre

0

Pouvez-vous tracer la requête pour voir ce que génère L2S? À quoi ressemble cette requête? Pouvez-vous obtenir une mise à jour en l'exécutant directement dans SSMS?

Y a-t-il d'autres influences extérieures? J'ai déjà vu ce problème où un TRIGGER empêchait la mise à jour.

0

essayer:

TestDataContext td = new TestDataContext(); 
      UserAddress ua = (from u in td.GetTable<UserAddresses>() 
           where u.UserID == 56 
           select u).Single(); 
      ua.Address1 = "ffffffffffffuuuuuuuuuuu"; 
      td.SubmitChanges(); 
1

Je n'ai pas un ensemble clé primaire pour la table que je voulais mettre à jour dans mon instance de base de données. Linq n'a donc pas créé les méthodes d'extensibilité qui gèrent les fonctions d'insertion, de mise à jour et de suppression pour cette classe d'entité. Merci pour les réponses.

Questions connexes