0

データベースに 1 対 1 の関係で 2 つのテーブルがあり、弱い関係です。

Videos(IDVideo, IDType, year, ...) Serie(IDSerie, IDVideo, ...)

ビデオのタイプを変更しようとすると、新しいタイプがシリーズでない場合、このビデオに属するシリーズ テーブルの行を削除したいと思います。だから私はこの手順に従います:

Videos myVideoDB = myContext.Videos.Include("Series").Where(v=>v.IDVideo == paramVideo.IDVideo).FirstOrDefault<Videos>();

myContext.Series.Remove(myVideoDB.Series.ElementAt(0));

この 2 行目で、次のエラーが表示されます。

Multiplicity constraint violated. The role 'videos' of the relationship 'xxx' has the multiplicity 1 or 0..1.

なんで?Serie を削除すると、DbContext はビデオのコレクションからエンティティを削除する必要があることを認識していると思います。それ以外の場合は、最初にビデオのコレクションからエンティティを削除してからシリーズを削除しようとしましたが、問題は解決しません。

ありがとう。

4

1 に答える 1

0

解決策は、エンティティ Series を 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 を取得してから、ビデオのシリーズ コレクションをクリアし、ローカルからセリエを削除することです。

于 2013-07-23T11:08:19.150 に答える