9

私たちはエンティティフレームワークコードで最初に取り組んでいます

授業動画があります

class Video{
   List<ImageInfo> Images{
      get; set;
   }
}

画像情報クラスには、画像へのパスとその他の情報が含まれています

class ImageInfo{
    String path;
    ...
}

ビデオを削除するときにEFにimageinfosを削除させたい

そのため、モデルビルダーを次のように変更しました。

modelBuilder
    .Entity<Video>()
    .HasMany(v => v.Images)
    .WithRequired()
    .WillCascadeOnDelete(true);

imageinfo クラスにビデオへのリンクを追加したくありません。

双方向の外部キーなしでカスケード削除機能を取得することは可能ですか?

編集

ビデオを保存するときに、imageInfo の video_id がデータベースに入力されません。

http://pbrd.co/14X82vb

どうすればこれを修正できますか?

関連しているかどうかはわかりませんが、画像を含む新しいビデオを同時に追加すると、次のエラーが発生します。

Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values.
4

1 に答える 1

18

WithRequired、2 方向の関係を紹介します。したがって、次のことを行う必要があります。

modelBuilder
    .Entity<Video>()
    .HasMany(v => v.Imgages)
    .WithOptional()
    .WillCascadeOnDelete(true);

...そして、逆の関係を望んでいると仮定すると...

public class Video { }
public class ImageInfo {
    public virtual Video { get; set; }
}

modelBuilder
    .Entity<ImageInfo>()
    .HasRequired(v => v.Video)
    .WithMany()
    .WillCascadeOnDelete(true);

List<ImageInfo>PS: は であるべきだと思うvirtualので、ここで定義する方法を示します ...

public class Video {
    public Video() { this.Images = new List<ImageInfo>(); }
    public virtual ICollection<ImageInfo> Images { get; set; }
}
于 2013-02-15T16:22:59.113 に答える