我的数据库中有两个表,一对一的关系,是一种弱关系。
视频(IDVideo,IDType,年份,...) Serie(IDSerie,IDVideo,...)
当我尝试更改视频类型时,如果新类型不是系列,我想删除系列表中属于此视频的行。所以我按照以下步骤操作:
Videos myVideoDB = myContext.Videos.Include("Series").Where(v=>v.IDVideo == paramVideo.IDVideo).FirstOrDefault<Videos>();
myContext.Series.Remove(myVideoDB.Series.ElementAt(0));
在第二行中我收到以下错误:
Multiplicity constraint violated. The role 'videos' of the relationship 'xxx' has the multiplicity 1 or 0..1.
为什么呢?我认为当我删除Serie时,DbContext知道它必须从视频集合中删除该实体。否则,我尝试先删除视频集中的实体,然后删除系列但问题仍未解决。
感谢。
答案 0 :(得分:0)
嗯,解决方案是我需要从DBContext中的本地删除实体系列:
long idSerie = miVideoDB.Series.ElementAt(0).IDSerie;
myVideoDB.Series.Clear();
miContexto.Series.Local.Remove(miContexto.Series.Local.FirstOrDefault<Series>(s => s.IDSerie == idSerie));
我需要的是首先获取系列的ID,然后在我的视频中清除系列集合,并从当地删除系列。