2008-10-13 7 views
6

J'ai 2 classes avec une association LINQ entre eux à savoir:Comment changer la valeur du champ associé

Table1:  Table2: 
ID   ID 
Name   Description 
       ForiegnID 

L'association est ici entre Table1.ID -> Table2.ForiegnID

I besoin de pouvoir changer la valeur de Table2.ForiegnID, mais je ne peux pas et pense que c'est à cause de l'association (comme quand je l'enlève, ça marche). Par conséquent, est-ce que quelqu'un sait comment je peux changer la valeur du champ associé Table2.ForiegnID?

Répondre

7

Consultez le fichier designer.cs. Ceci est la propriété de la clé

[Column(Storage="_ParentKey", DbType="Int")] 
public System.Nullable<int> ParentKey 
{ 
    get 
    { 
     return this._ParentKey; 
    } 
    set 
    { 
     if ((this._ParentKey != value)) 
     { 
      //This code is added by the association 
      if (this._Parent.HasLoadedOrAssignedValue) 
      { 
       throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); 
      } 
      //This code is present regardless of association 
      this.OnParentKeyChanging(value); 
      this.SendPropertyChanging(); 
      this._ParentKey = value; 
      this.SendPropertyChanged("ParentKey"); 
      this.OnServiceAddrIDChanged(); 
     } 
    } 
} 

Et c'est la propriété des associations. Il est préférable d'attribuer des modifications via l'association au lieu de la clé. De cette façon, vous n'avez pas à vous soucier de savoir si le parent est chargé.

+0

Pourrait être sur quelque chose là, s'il vous plaît pouvez-vous développer sur ce – HAdes

+0

Merci cela fait plus de sens. – HAdes

0

Vous souhaitez associer un autre enregistrement à table1 ou modifier table1.id? Si c'est l'option 1, vous devez supprimer cette association et en définir une nouvelle. Si option 2, vérifiez db et voyez si update cascade yes est activé pour ce fk et que vous enregistrez et modifiez la valeur de id.

1
Table1:  Table2: 
ID   ID 
Name   Description 
       ForeignID 

Avec ceci:

Table2.ForeignID = 2

vous recevez une erreur ..........

Exemple:

Vous pouvez changer ForeignID champ dans le tableau 2 avec ceci:

Table2 table = dataContext.Table2.single(d => d.ID == Id) 

    table.Table1 = dataContext.Table1.single(d => d.ID == newId); 

Lorsque la variable newId est l'ID de l'enregistrement dans le tableau 2 que vous souhaitez associer avec l'enregistrement dans le tableau 1

Questions connexes