Как изменить значение связанного поля

У меня есть 2 класса с ассоциацией LINQ между ними, то есть:

Table1:       Table2:
ID            ID
Name          Description
              ForiegnID

Здесь связь между Table1.ID -> Table2.ForiegnID

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
13 341
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Ответ принят как подходящий

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

[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();
        }
    }
}

И это собственность ассоциации.

[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");
        }
    }
}

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

Table1:       Table2:
ID            ID
Name          Description
              ForeignID

С этим :

Таблица2.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.

Другие вопросы по теме