2008-10-13 4 views
6

У меня есть 2 классов с ассоциацией LINQ между ними, а именно:Как изменить значение связанного поля

Table1:  Table2: 
ID   ID 
Name   Description 
       ForiegnID 

Ассоциация здесь между Table1.ID -> Table2.ForiegnID

I нужно иметь возможность изменять значение Table2.ForiegnID, однако я не могу и думаю, что это из-за ассоциации (как при удалении, оно работает).

Поэтому кто-нибудь знает, как я могу изменить значение связанного поля Table2.ForiegnID?

ответ

7

Проверьте файл designer.cs. Это имущество ключа

И это свойство ассоциации.

[Association(Name="Parent_Child", Storage="_Parent", ThisKey="ParentKey", IsForeignKey=true, DeleteRule="CASCADE")] 
public Parent Parent 
{ 
    get 
    { 
     return this._Parent.Entity; 
    } 
    set 
    { 
     Parent previousValue = this._Parent.Entity; 
     if (((previousValue != value) 
        || (this._Parent.HasLoadedOrAssignedValue == false))) 
     { 
      this.SendPropertyChanging(); 
      if ((previousValue != null)) 
      { 
       this._Parent.Entity = null; 
       previousValue.Exemptions.Remove(this); 
      } 
      this._Parent.Entity = value; 
      if ((value != null)) 
      { 
       value.Exemptions.Add(this); 
       this._ParentKey = value.ParentKey; 
      } 
      else 
      { 
       this._ParentKey = default(Nullable<int>); 
      } 
      this.SendPropertyChanged("Parent"); 
     } 
    } 
} 

Лучше всего назначать изменения через ассоциацию вместо ключа. Таким образом, вам не нужно беспокоиться о том, загружен ли родитель.

+0

Может быть на что-то там, пожалуйста, вы можете расширить этот – HAdes 2008-10-13 14:51:52

0

Вы хотите связать себя с другой записью в таблице1 или изменить таблицу1.id? , если это вариант 1, вам необходимо удалить эту связь и установить новую. Если параметр 2, проверьте ваш db и посмотрите, включен ли каскад обновления yes для этого fk, а затем получить запись и изменить значение id.

1
Table1:  Table2: 
ID   ID 
Name   Description 
       ForeignID 

С этим:

Table2.ForeignID = 2

вы получите сообщение об ошибке ..........

Пример:

Вы можете изменить ForeignID в таблице 2:

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

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

Если переменная newId является идентификатор записи в таблице 2, что бы вы, как ассоциированную йота запись в таблице 1

Смежные вопросы