2013-12-18 76 views
0

當我使用一個簡單的主 - 詳細信息關係實體框架代碼優先數據註釋:自參照

public class Master 
{ 
    public long ID { get; set; } 
    public virtual Detail Detail { get; set; } 
} 

public class Detail 
{ 
    public long ID { get; set; } 
} 

代碼首先創建數據模型我希望:外主表引用內部細節。當我改變它的方式,法師引用自身

public class Master 
{ 
    public long ID { get; set; } 
    public virtual Master Inner { get; set; } 
} 

代碼首先創建一個數據模型,其中內主引用外高手。爲什麼在這種情況下表現實體框架不同?我可以用數據註釋糾正這個問題嗎(避免流利的API)?

+0

如果我正確地得到了您的問題,我相信它可以使用InverseProperty註釋完成,例如http://stackoverflow.com/questions/5691780/navigation-property-without-declaring-foreign-key – hyperN

+0

這可能有助於http:///msdn.microsoft.com/en-us/data/jj713564和http://msdn.microsoft.com/en-us/data/jj591583 –

+0

InverseProperty不起作用。它似乎只與ICollection一起工作。請參閱http://stackoverflow.com/questions/18625631/ef-4-4-inverseproperty-does-not-quite-inverse – StefanG

回答

0

實體框架工作正確。你可以通過添加一個Value屬性來看到這一點:

public class Master 
{ 
    public long ID { get; set; } 
    **public string Value { get; set; }** 
    public virtual Master Inner { get; set; } 
} 

所有實體框架所做的,都是顛倒對象的順序。根對象具有最高ID ,而最內部對象是以ID = 0開始的對象。(想想看,爲什麼EF這麼做很明顯)。

所以,我剛剛誤解了數據。