如何在不更改模型的情况下使用Fluent API声明一对多?

时间:2016-04-09 18:28:45

标签: 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; }  
}

现在我想配置架构,以便在数据库中设置关系。使用Fluent API,我会这样做。

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

问题是现在我必须声明驴中的猴子列表。我不想那样做。我仍然希望猴子使用外键指向驴,所以只需要状态不会,因为我需要指定我的自定义列名来存储指向驴表中PK的FK。

model.Entity<Monkey>.HasRequired(_ => _.Donkey);

所以,上面缺少映射(当我只是添加它时它不会编译)。有没有办法在不改变 Donkey 类的定义的情况下解决它?

1 个答案:

答案 0 :(得分:1)

modelBuilder.Entity<Monkey>()
            .HasRequired(x => x.Donkey)
            .WithMany();