2011-12-09 121 views
2

動機:我EF4.1的DbContext是節約實體以錯誤的順序實體框架:映射沒有導航屬性的外鍵?

原因:缺乏導航屬性對我的模型

我想怎麼解決這個問題:

我想設立外商在我的DbContext中的關鍵關係。問題是我的實體對象沒有導航屬性(我使用它來填充Web服務,然後將DTO對象發送到我的應用程序)。

下面的類將是一個例子。在MinorClass中,我想配置我的上下文,以便它知道MajorClassID是一個外鍵。我在互聯網上發現的關於如何顯式定義外鍵的文章涉及使用我的對象沒有的導航屬性。

有沒有一種方法來映射這種關係?

public class MinorClass 
{ 
    public Guid ID {get;set:} 
    public Guid MajorClassID {get;set;} // foreign key 
    public string Name {get;set;} 
} 

public class MajorClass 
{ 
    public Guid ID {get;set;} 
    public string Name {get;set;} 
} 
+0

你不能認爲'MajorClassID'只是一個標量屬性(如'Name')嗎?沒有導航屬性,在ORM的「O」端基本上根本沒有關係。 – Slauma

+0

這個問題背後的問題是,由於EF沒有意識到這種關係,因此EF會以錯誤的順序保存項目。我真正想要做的就是告訴EF以什麼順序保存項目。 –

回答

5

導航屬性是主要構造,而外鍵是助手(imho錯誤助手)。 EF通過由導航屬性定義的關係來識別DB命令的排序。你不能只用外鍵來定義關係。至少在關係的一側需要導航屬性。