表与几个一对多的关系

时间:2012-12-20 11:56:28

标签: entity-framework ef-code-first ef-migrations

我有一个EF代码优先模型,其中一个表与其他表有几个一对多的关系:

public class Note
{
  [Key]
  public Guid Id { get; set; }
  public string NoteText { get; set; }
  public string Author { get; set; }
  public DateTime? CreationDate { get; set; }
}

public class Foo
{
  public Foo()
  {
    Notes = new HashSet<Note>();
  }

  [Key]
  public Guid Id { get; set; }
  public virtual ICollection<Note> Notes { get; set; }
  // other properties ommited...
}

public class Bar
{
  public Bar()
  {
    Notes = new HashSet<Note>();
  }

  [Key]
  public Guid Id { get; set; }
  public virtual ICollection<Note> Notes { get; set; }
  // other properties ommited...
}

如您所见,FooBar都有自己的Notes列表,但Note属于Foo a Bar

当脚手架迁移时,EF会在Foo表中为BarNotes创建一个外键,我认为这是不正确的。相反,我希望在FooNotes之间创建一个链接表,在BarNotes之间创建另一个链接表。

有没有办法自动执行此操作?或者我是否必须在代码优先实现中手动创建这些类?

1 个答案:

答案 0 :(得分:0)

这已在other post中得到解答! 但为了节省一点谷歌搜索,你得到一对多的关联,这是正确的。您希望代码中存在多对多关系,因此您需要做的是:

中的

public class Note
{
  [Key]
  public Guid Id { get; set; }
  public string NoteText { get; set; }
  public string Author { get; set; }
  public DateTime? CreationDate { get; set; }
  public DateTime? CreationDate { get; set; }
  public virtual ICollection<Foo> Foos { get; set; }
  public virtual ICollection<Bar> Bars { get; set; }
}

希望这有帮助