2014-11-06 210 views
0

我爲了創建樹創建這些類創建樹(用戶握住根)與實體框架

public class Node 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 

    [ForeignKey("Id")] 
    public Node Parent_Id { get; set; } 
} 

public class User 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 

    [ForeignKey("Id")] 
    public Node Root { get; set; } 
} 

但實體框架(代碼第一)犯規保存PARENT_ID (在用戶級IT保存爲預期的「根」)

當我手動創建的表(databese第一),因爲它應該是,實體框架父ID保存爲INT,而不是「節點」

我可以做什麼?

+0

爲什麼你把它稱爲'Parent_Id'而不是簡單的'Parent'?我有一段時間沒有使用過EF,但是可能有一些約定用於命名你的屬性? – WeSt 2014-11-06 18:54:00

回答

1

您沒有正確實施ForeignKey註釋。你需要做這樣的事情,而不是:

[Key] 
public int Id { get; set; } 
public string Name { get; set; } 

public int ParentID { get; set; } 

[ForeignKey("ParentID")] 
public Node Parent { get; set; } 

這上面的代碼,然後將讓你有不同的Nodes那麼就可以有一個分配給他們一個Parent節點。每個Node需要有自己的ID,加上它的父。 ForeignKey註釋必須指向父的標識,而不是節點的標識。