如何在Fluent API中声明一对多,以便不需要它?

时间:2016-04-09 19:42:51

标签: c# entity-framework one-to-many ef-fluent-api

假设我们有以下两个类。

class Donkey
{
  public Guid Id { get; set; }
}

class Monkey
{
  public Guid Id { get; set; }
  public Donkey Donkey { get; set; }  
}

我可以按如下方式配置关系。

protected override void OnModelCreating(DbModelBuilder model)
{
  base.OnModelCreating(model);
  model.HasDefaultSchema("dbo");
  ...
  model.Entity<Monkey>
    .HasRequired(_ => _.Donkey)
    .WithMany()
    .Map(_ => _.MapKey("DonkeyId"));
}

我想让它不是必需的,即 Donkey 属性可以 null 但是如果它不是,那么它就是&#39 ; s指向该表中的一行。

我不确定它是否可能,因为作为一个FK依赖于它的目标是一个PK,它永远不会是空的。但是,在C#中,它具有完美的意义。我可以有一个没有附件的自由奔跑的猴子(因为它的驴是 null )但我也可以给它分配一把驴子,我想要EF和导航属性来为我提供魔法。

有可能实现吗?

1 个答案:

答案 0 :(得分:2)

您可以使用 HasOptional:

  model.Entity<Monkey>
    .HasOptional(_ => _.Donkey)
    .WithMany()
    .Map(_ => _.MapKey("DonkeyId"));