2009-08-28 8 views
0

chaque exemple que j'ai vu montre comment faire une requête de mise à jour dans linq à sql en faisant cela. Je me demande si vous pouvez passer un nouvel objet et le faire comprendre?Comment mettre à jour à Linq à SqL?

Comme je pourrais le faire?

Enity myEntity = new Entity(); 
myEntity.UserId = "123"; 
myEntity.Name = bob: 

    // grab entity record 
    // shove record ito the found record 
    // it figured out what to update and what no to update 

Répondre

2

Selon exactement ce que vous voulez faire, vous devez soit la méthode InsertOnSubmit, ou la méthode Attach de la table respective (à savoir les dbContext.Entities). InsertOnSubmit est utilisé pour ajouter un enregistrement, tandis que Attacher peut être utilisé si vous voulez affecter un UPDATE sans devoir d'abord SELECT l'enregistrement (vous connaissez déjà la valeur de clé primaire)

+0

Je ne connais pas grand chose à linq to sql ou à cette méthode d'attachement. Tout ce que je sais, c'est ce que je vous ai montré ci-dessus où vous prenez le dossier, puis faites les changements et soumettez. – chobo2

0

Si vous voulez faire cela pour des raisons de performance, alors vous ne devriez pas vous en préoccuper. Linq to Sql met en cache les objets localement, de sorte que saisir une entité par ID pour modifier certains champs est très bon marché.

+0

rien à faire avec des problèmes de préformance (je voudrais comprendre ce que j'essaye de faire serait encore un peu plus lent) mais je pensais depuis avec asp.net mvc vous pouvez l'avoir comme un parametre de méthode il est un peu suce que vous avez pour ensuite le passer, puis allez MyEntity.UserId = MyParamerterEntity.UserId; semble un peu redudent. – chobo2

0

Il est possible de l'attacher et de le conserver dans la base de données, mais vous pouvez définir un champ pour vérifier la simultanéité (c'est-à-dire LastModified).

Si vous allez utiliser la méthode Attach sur le contexte de données, vous devez définir les clés primaires/composite avant de joindre l'entité (de sorte que vous ne déclenchent pas INotifyPropertyChanging, INotifyPropertyChanged événements).

1

Dans le cas où vous avez le dbContext disponible et prêt, ajoutez InsertOnSubmit:

Entity myEntity = new Entity(); 
myEntity.UserId = "123"; 
myEntity.Name = bob: 

Dbcontext.InsertOnSubmit(myEntity); 

Dbcontext.SubmitChanges(); 

Comme le nom de la méthode implique, cela va insérer votre nouvelle entité dans la base de données sur l'appel SubmitChanges.

Marc