【发布时间】:2008-12-30 14:58:23
【问题描述】:
以下代码加载一个 gig,清除 gigs 行为集合,然后添加一个新行为。
Data.LinqToSQL.Gig dbGig = DBContext.Gigs.Where(x => x.ID == myGigID).SingleOrDefault();
//Remove all references to the current acts
if(dbGig.Acts!=null) {
DBContext.Acts.DeleteAllOnSubmit(dbGig.Acts);
}
Data.LinqToSQL.Act dbAct = new ListenTo.Data.LinqToSQL.Act();
dbAct.ID = Guid.NewGuid();
DBContext.Acts.InsertOnSubmit(dbAct);
DBContext.SubmitChanges();
请注意,每次我运行此代码时,myGigID 的值都是相同的,因此我加载的始终是同一个 gig。
我第一次运行此代码时运行良好,并且我有一个 1 幕的演出。
第二次,dbGig.Acts(一个集合)的计数为 0,因此 DeleteAllOnSubmit 不会删除任何行为。然而,在数据库中,这个演出有 1 个动作!因此,一旦此代码运行,我最终会执行 2 次操作。
如果我第三次运行它,我总共会完成 3 幕。
任何想法我做错了什么?
【问题讨论】: