0

私は次のものを持っています:

   public abstract class EntityBase
   {
      [Key]
      public int Id { get; set; }

      public DateTime? CreatedTime { get; set; }
      public DateTime? ModifiedTime { get; set; }
   }



public class AnalysisFile : EntityBase
   {
      public AnalysisFile()
      {
         DateAdded = DateTime.Now;
      }

      public string SourceFolder { get; set; }
      public string Filename { get; set; }
      public DateTime DateAdded { get; set; }
      public long FileSize { get; set; }
      public Document Document { get; set; }
   }

public class Document : EntityBase
   {
      public Document()
      {
         Publish = true;
      }

      public string Name { get; set; }
      public int AreaId { get; set; }
      public int SchoolId { get; set; }
      public int Year { get; set; }
      public long FileSize { get; set; }
      public AnalysisFile AnalysisFile { get; set; }
      public School School { get; set; }
      public Area Area { get; set; }
      public bool Publish { get; set; }
   }

     modelBuilder.Entity<Document>().HasRequired(x => x.AnalysisFile);
     modelBuilder.Entity<AnalysisFile>().HasOptional(x => x.Document);

私の問題は、EFがAnalysisFileとDocumentの間の関係の外部キーを作成していないように見えることです。ここで何かが欠落しているのでしょうか、それともこれは予期される動作ですか?

また、両方のクラスでAnalysisFileIdプロパティとDocumentIdプロパティを作成しようとしましたが、作成してもIDが入力されません。

別の質問もあります:ドキュメントがAnalysisFileに対してカスケード削除されていることを確認するにはどうすればよいですか?

4

1 に答える 1

2

Entity Frameworkとの1対1の関係は、共有主キーの関連付けです。Documentの主キーは同時に外部キーであるため、主キー以外に個別の外部キー列はありませんAnalysisFile。(データベースで作成された関係を調べると、それがわかります。外部キーと主キーを関連付ける必要がIdありDocumentますIdAnalysisFile

次のようにカスケード削除を有効にできます。

modelBuilder.Entity<Document>()
    .HasRequired(x => x.AnalysisFile)
    .WithOptional(x => x.Document)
    .WillCascadeOnDelete(true);
于 2012-11-14T18:18:40.260 に答える