如镜像所描述,我得到一个parent-Children relation
,并且由于ParentID
不接受空值(并且由于我所具有的UI的某些限制,我不能更改为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)不能设置为null。
最佳答案
您不能使根元素成为其自己的父元素吗?每次要递归地查找元素祖先时,都必须进行检查(以避免无限循环),但是我认为它对您来说很好。
关于c# - 如何让一列在自相关表中将空值接受为零(0),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4656791/