Логически, почему нельзя изменить ParentID для объекта, вместо этого я должен изменить родительский объект сам? - PullRequest
2 голосов
/ 28 ноября 2010
//Set Parent ID for the rest of the Reports data sources
this.ReportDataSources.ToList().ForEach(rds => rds.Parent = reportDataSource);

Почему я не могу установить родительский идентификатор напрямую? что может позволить LINQ предотвратить такое действие

//Set Parent ID for the rest of the Reports data sources
this.ReportDataSources.ToList().ForEach(rds => rds.ParentID = reportDataSource.ID);

Исключение, брошенное сюда

[Column(Storage="_ParentID", DbType="Int")]
public System.Nullable<int> ParentID
{
    get
    {
        return this._ParentID;
    }
    set
    {
        if ((this._ParentID != value))
        {
            if (this._Parent.HasLoadedOrAssignedValue)
            {
                throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
            }
            this.OnParentIDChanging(value);
            this.SendPropertyChanging();
            this._ParentID = value;
            this.SendPropertyChanged("ParentID");
            this.OnParentIDChanged();
        }
    }
}

1 Ответ

2 голосов
/ 28 ноября 2010

Существует к сожалению двойственность между ParentId и Parent; не соглашаться с ними - это боль, так что это не позволяет тебе это делать. Вы можете установить только идентификатор - особенно при вставке.

Вы можете попробовать:

obj.Parent = null;
obj.ParentId = newParentId;

Тогда они не могут быть в конфликте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...