2

背景是现在的DB是千篇一律的苦心打造,算是碰不得。我想在一张新桌子上拍摄(按照本指南工作得很好)。然而,我被困在与预先存在的垃圾建立关系上。

我有一个声明如下的新类。

public class Stuff
{
  public int Id { get; set; }
  public int OldThingId { get; set; }
  public virtual OldThing OldThing { get; set; }
}

我希望它有一个OldThing类型的父级,所以我添加了以下内容。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  ...
  OnModelCreating(modelBuilder.Entity<Stuff>());
}
private void OnModelCreating(EntityTypeBuilder<Stuff> entity)
{
  entity.HasKey(a => a.Id);
  entity.HasOne(a => a.OldThing);
  //entity.HasOne(a => a.OldThing).IsRequired();
}

在这里,我想使用WithManyIsRequired但由于旧的东西与新的东西没有关系(而且我不想篡改它),我不确定如何告诉 FluentApi 该字段是必需的。遗憾的是,该方法似乎在HasOne上不存在。

我应该如何处理它?

4

1 回答 1

1

您应该可以在IsRequired()以下PropertyBuilder位置调用EntityTypeBuilder

protected override void OnModelCreating(ModelBuilder modelBuilder)
{        
    modelBuilder.Entity<Stuff>().HasKey(a => a.Id);
    modelBuilder.Entity<Stuff>().HasOne(a => a.OldThing);
    modelBuilder.Entity<Stuff>()
        .Property(s => s.OldThingId)
        .IsRequired();
}
于 2019-06-04T16:33:59.750 回答