2011-07-14 45 views
2

這可能是很簡單的,我會用一個紅色的臉結束......一個或零到許多與代碼首先

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) 但是這並沒有什麼好處。

+3

你想做什麼? – saj

+0

難道你不能從Person.Manager.Id獲取管理員ID而不是使用Person.ManagerId?除非在這兩種情況下GUID是不同的,否則我不明白你爲什麼要存儲兩次。 – Onots

回答

0

您是否嘗試過沒有任何自定義關係映射?我本來以爲ef會自動爲你做魔術。

如果不將您的類更改爲folows,並且您不需要配置任何關係。它可能是ef代碼第一不喜歡guid

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

你有使用guid而不是int的具體原因?

+0

我需要使用斷開的數據進行操作,並且guid看起來是最好的選擇。 – rozon

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;} 
} 
相關問題