2017-08-30 84 views
0

我有一個實體在父子關係中引用自己。我需要找出如何使用代碼和流利的API來實現這一點。以下是我的實體課。如何先使用代碼創建自引用表?

public class MenuItem 
{ 
    public int Id { get; set; } 
    public string LinkText { get; set; } 
    public string ControllerName { get; set; } 
    public string ActionName { get; set; } 

    public MenuItem Parent { get; set; } 
    public int ParentId { get; set; } 

    private IList<Role> Roles; 
    private IList<MenuItem> ChildMenuItems; 

    public MenuItem() 
    { 
     Roles = new List<Role>(); 
     ChildMenuItems = new List<MenuItem>(); 
    } 
} 

我試着在我的實體配置中使用下面的代碼。

HasOptional(m => m.Parent) 
       .WithMany(m => m.ChildMenuItems) 
       .HasForeignKey(m => m.ParentId) 
       .WillCascadeOnDelete(false); 

,但我得到這個錯誤 - 模型生成過程中檢測到

一個或多個驗證錯誤:

Vantage.Data.EF.MenuItem_Parent:與 多重矛盾「MenuItem_Parent_Target」中 關係'MenuItem_Parent'中的參照約束。由於 從屬角色中的所有屬性都是不可空的,因此主體角色 的多重性必須爲'1'。

所有幫助表示讚賞。

謝謝。

回答

0

ParentId字段應該爲空。如果需要parentid,則無法創建任何記錄。

只要改變public int ParentId { get; set; }

public int? ParentId { get; set; }

相關問題