我很抱歉难以理解的标题!
我尝试的很简单,我有这些表:
Maintable(ID)
Child1(MainTableID, ID)
Child2(MainTableID, ID)
Child3(MainTableID, ID)
Child4(MainTableID, ID)
从Child1创建Child2,Child3和Child4,因此每次更改Maintable或Child1时都会重新创建它们:
Child2 = GetChild2FromChild1()
Child3 = GetChild3FromChild1()
Child4 = GetChild4FromChild1()
之后,我只是删除旧表,并保存新创建的:
using (var context = new EF())
{
context.DeleteObject(child2); // only the ones belong to Maintable
context.DeleteObject(child3);
context.DeleteObject(child4);
}
using (var context = new EF())
{
// because i always delete child2->4 , so i always set their state to be Added
// here i will add the new tables, something like this :
foreach (var child2 in Maintable.child2)
{
counterID--;
child2.State = State.Added;
child2.ID = counterID;
}
context.SaveChanges();
}
我知道这很难理解,所以步骤如下:
Maintable
包含四个子表(1-> 4)Maintable
时,我将不得不删除:Maintable.Child2,Maintable.Child3,Maintable.Child4,Child1除外但这个解决方案确实是一个痛苦的屁股,我不断得到错误,我几乎没有弄清楚为什么,和奇怪的结果等,例如我在发布这个问题之前等待下午的调试没有任何积极的进展!
所以我想问的是,还有另一种方式可以满足我的需求,而且还有一种清洁"一,因为我觉得我的问题不是很复杂,而且我对C#不太熟悉
答案 0 :(得分:1)
据我所知,你实际上只是在编辑child2-3-4的ID
。如果我说得对,这是更新时的方法。
using (var context = new EF())
{
foreach (var child2 in Maintable.child2)
{
counterID--;
child2.ID = counterID;
}
foreach (var child3 in Maintable.child3)
{
counterID--;
child3 .ID = counterID;
}
foreach (var child4 in Maintable.child4)
{
counterID--;
child4 .ID = counterID;
}
context.SaveChanges();
}
但我怀疑这是你问的问题:/