Как позволить столбцу принимать нулевые значения как ноль (0) в таблице Self-Relation - PullRequest
2 голосов
/ 11 января 2011

alt text

Как описано на рисунке, я получил parent-Children relation и, поскольку ParentID не принимает нулевые значения (и я не могу перейти на nullabel из-за некоторых ограничений в пользовательском интерфейсеУ меня есть), как я могу удалить отношение существования между ReportDataSources для того, чтобы изменить родительский элемент для них (здесь я хочу установить parentId для одного из них = 0), как я могу сделать это с i cant change the ParentID directly и установкой Parent = 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 Ответ

1 голос
/ 11 января 2011

Разве вы не можете сделать свой корневой элемент своим собственным родителем? Вам придется проверять это каждый раз, когда вы хотите рекурсивно найти предка элемента (чтобы избежать бесконечных циклов), но я думаю, что он будет работать нормально для вас.

...