2011-01-11 7 views
2
画像で説明したように、私は parent-Children relationを持って ParentIDは(NULL値を受け付けないので、私はできない

alt text列としてNULL値を受け入れるようにする方法、ゼロ(0)自己関係テーブルに

私が持っているUIのいくつかの制限のためにnullabelに変更)、どのようにそれらの親を変更するためにReportDataSourcesの間の存在関係を削除することができますか(ここで私はそれらのparentIdを設定したい= 0) i cant change the ParentID directlyParent = nullの設定が

public void SetReportDataSourceAsMaster(ReportDataSource reportDataSource) 
{ 
    //Reset Master 
    this.ReportDataSources.ToList().ForEach(rds => rds.IsMaster = false); 
    //Set Master 
    reportDataSource.IsMaster = true; 
    //Set Parent ID for the rest of the Reports data sources 
    this.ReportDataSources.Where(rds => rds.ID != reportDataSource.ID).ToList().ForEach(rds => 
    { 
     //Change Parent ID 
     rds.Parent = reportDataSource; 
     //Remove filttering data 
     rds.FilteringDataMembers.Clear(); 
     //Remove Grouping Data 
     rds.GroupingDataMembers.Clear(); 
    }); 
    //Delete parent HERE THE EXCEPTION THROWN AFTER CALLING SUBMITCHANGES() 
    reportDataSource.Parent = null; 
} 

例外トン有効ではありませんので、そのSubmitChanges()

ReportDataSourceとReportDataSourceの関係を削除しようとしました。ただし、関係の外部キー(ReportDataSource.ParentID)の1つをnullに設定することはできません。

答えて

1

ルート要素をそれ自身の親にすることはできませんか?要素の祖先を再帰的に探したいときは(繰り返しループを避けるために)それをチェックする必要がありますが、うまくいくと思います。

+0

+1 Im今、このソリューションをテストして、LINQでできることがあれば、 'selfParent'設定を避けるほうが良いでしょう。 –

+0

これは単なる回避策であり、実際の解決策ではないと私は同意します。しかし、データベースとの私の能力は、他に何かを提案するのに十分ではありません。だから... – Falanwe

関連する問題