如何以一对一的关系删除实体?

时间:2013-07-21 08:25:56

标签: entity-framework-4

我的数据库中有两个表,一对一的关系,是一种弱关系。

视频(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知道它必须从视频集合中删除该实体。否则,我尝试先删除视频集中的实体,然后删除系列但问题仍未解决。

感谢。

1 个答案:

答案 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,然后在我的视频中清除系列集合,并从当地删除系列。