2009-06-17 8 views
0

私は1つのオブジェクトを更新していて、それと共に子オブジェクトを更新しようとしています。Linqオブジェクトの更新中に子プロパティが上書きされるのはなぜですか?

基本的に私はLinqDataSourceのOnUpdatingイベントを処理しています。

私はe.NewObject.ChildがあるLinqDataSource.OnUpdatingイベントでObjectUpdate機能(私は値を見ることができますので、今、私はちょうどブレークポイントを持っているところ...)

を持っているのDataContextクラスで

何も意味をなさない。私はどこかLinqDataSource.UpdatingとDataContext.UpdateObjectの間にそれが持つオブジェクトを移入だ...

を新しい値にいることを設定し、私はDataContext.ObjectUpdate NewObject.Childに着く時間によって古い値で上書きされています古い値...しかし、私は新しいものが必要です。

これを修正する方法はありますか、または神経質な内訳がありますか?

答えて

0

私は問題を理解したと思います。 OriginalObjectがデータコンテキストに取り付けられた後に値がOriginalObjectへのNewObjectからコピーされ

)実際にデータコンテキスト 2に取り付けられているLinkDataSourceUpdateEventArguments.OriginalObjectだ

1):.NETリフレクターを介してLinqDataSourceコントロールを実行した後、私は気づい

私が理解できないのは、関連プロパティがコピーされない理由です。たぶん同じ理由であなたはそれらをシリアル化できませんか?

回避策は、自分自身でUpdatingイベントを処理し、LinqDataSourceがその部分を処理するのではなく、実際の送信を実行することでした。

void FormDataSource_Updating(object sender, LinqDataSourceUpdateEventArgs e) 
    { 

     var newObj = e.NewObject; 

     var table = FormContext.GetTable(e.NewObject.GetType()); 

     if (BuildingObject != null) 
      BuildingObject(sender, new HeirarchicalBuildObjectEventArgs(newObj)); 

     table.Attach(newObj, e.OriginalObject); 

     FormContext.SubmitChanges(); 


     e.Cancel = true; 
    } 
関連する問題