Equivalent for .HasOptional in Entity Framework Core 1 (EF7)

前端 未结 2 840
终归单人心
终归单人心 2020-12-11 00:36

Consider two classes.

public class File
{
    [Key]
    public string Id { get; set; }

    public string Message_Id { get; set; }

    internal Message Mess         


        
2条回答
  •  情歌与酒
    2020-12-11 00:57

    In EF Core you can use two ways for relating two tables:

    • Inside OnModelCreating:

      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          base.OnModelCreating(modelBuilder);            
      
          modelBuilder.Entity()
                      .HasOne(c => c.Message)
                      .WithOne()
                      .HasForeignKey(c => c.MessageId)                           
      }
      
    • Create new class FileConfiguration and calling it inside OnModelCreating:

      public class FileConfiguration : IEntityTypeConfiguration
      {
          public void Configure(EntityTypeBuilder builder)
          {           
              builder.ToTable("File");            
      
              // Id
              builder.HasKey(c => c.Id);
              builder.Property(c => c.Id)
                     .ValueGeneratedOnAdd();
      
              // Message
              builder.HasOne(c => c.Message)
                     .WithOne(c => c.File)
                     .HasForeignKey(c => c.MessageId)
                     .OnDelete(DeleteBehavior.Restrict);
          }
      }
      

      and inside OnModelCreating put below codes:

      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          base.OnModelCreating(modelBuilder);
      
          modelBuilder.ApplyConfiguration(new FileConfiguration());                                       
      }
      

提交回复
热议问题