2017-02-09 42 views
0

這是我的第一篇文章,所以請原諒我,如果我沒有按照正確的程序。 另外請注意,本週我纔開始學習EF-Code First,所以我對它很陌生,並不真正瞭解所有在stackoverflow上的解決方案。表外鍵指向兩個表中的一個

問題: 我有三個類:User,Tenant和Dashboard。
儀表板只能用於用戶或租戶。 換句話說,用戶有一個儀表板,租戶有一個儀表板。 它始終是用戶和儀表板之間的一對一關係。 租戶和儀表板也是如此。

如何創建這些關係?

我已經通讀了大量的數據註釋方法以及流暢的api方法,但我不得不承認,我仍然不知道如何去實現它。

public class User 
{ 
    [Key] 
    public int ID { get; set; } 

    public int TenantId { get; set; } 
    public virtual Tenant Tenant { get; set; } 
} 

public class Tenant 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

public class Dashboard 
{ 
    [Key] 
    public int DashboardId { get; set; } 
    public string Description { get; set; } 

} 
+0

您是說用戶與儀表板的一比一的關係。但是,您的用戶類具有租戶的導航屬性,而儀表板沒有任何內容 –

+0

是的,這僅僅是兩個類的示例。由於他們不工作,我刪除了數據註釋。有點希望我可以舉一個「未完成的課程」的例子,然後有人可以幫我解決如何「填補他們」。希望這是有道理的。 – SlapChip

+0

在您的情況下,用戶和租戶都將擁有儀表板的外鍵。鑑於儀表板數據在用戶之前創建。 – Pavvy

回答

0

在下面的用戶和租戶有一個單一的儀表板

public class User 
{ 
    public int UserId {get; set;} 
    public virtual Dashboard Dashboard {get; set;} 
} 

public class Tenant 
{ 
    public int TenantId {get; set;} 
    public string Name {get; set;} 
    public virtual Dashboard Dashboard {get; set;} 
} 

public class Dashboard 
{ 
    public int DashboardId {get; set;} 
    public string Description {get; set;} 
} 
+0

再次嗨。對不起,答覆很慢。今天才開始測試。問題是添加遷移時出現以下錯誤: 「無法確定類型'BOF365WebApp.Models.User'和'BOF365_Solution.Models.XC365Core.Dashboard.Dashboard'之間關聯的主體端點。必須使用關係流暢API或數據註釋來顯式配置此關聯。「 – SlapChip