首先是代码中的一个或零到多个

时间:2011-07-14 13:25:51

标签: c# entity-framework ef-code-first

这可能非常简单,我最后会脸红......

class Person {
  public Guid Id {get;set;}
  public string Name {get;set;}
  public Person Manager {get;set;} // The person may or may not have a manager.
  public Guid? ManagerId {get;set;} // I need the Guid if the Person has a manager
}

我试过了 modelBuilder.Entity<Person>().HasOptional(e=>e.Manager).WithMany().HasForeignKey(e=>ManagerId) 但那没有任何好处。

2 个答案:

答案 0 :(得分:0)

您是否尝试过没有任何自定义关系映射?我原本以为ef会自动为你做它的魔力。

如果没有将您的课程更改为folows并且您不需要配置任何关系。它可能是ef代码首先不喜欢guids

class Person {
  public int Id {get;set;}
  public string Name {get;set;}
  public Person Manager {get;set;}
  public int? ManagerId {get;set;}
}

您是否有使用guid的特定原因而不是int?

答案 1 :(得分:0)

您可以尝试使用数据注释来帮助EF推断关系。现在无法测试,所以它可能不会工作,但是像:

class Person {
  public Guid Id {get;set;}
  public string Name {get;set;}

  [ForeignKey("Id")]
  public virtual Person Manager {get;set;} 
  public Guid? ManagerId {get;set;}
}