1

我有我的數據庫中的表(AccessControl的)描述一種用戶「訪問控制列表」中包含的表客戶和其他表的信息。實體框架4.1:一個非常特殊的關係

例如:實體CUSTOMER由EntityId#1標記。如果用戶所屬的部門#6,他可以訪問的客戶#16和#31的記錄,但他不能爲#14,可以由用戶在部門#3瀏覽:

Table ACCESSCONTROL: 

    EntityId PrimaryKey DepartmentId 
    1  16  6 
    1  31  6 
    1  14  3 

這裏我使用的域的類的實例:

Public Class Customer 
    Public Property Id As Integer 
    ....... 
    Public Overridable Property Acl As ICollection(Of AccessControl) 
End Class 

Public Class AccessControl 
    Public Property EntityId As Integer 
    Public Property PrimaryKey As Integer 
    Public Property DepartmentId As Integer 
End Class 

我如何描述這種關係到用流利的Code First方法中的DbContext定義是什麼? 預先感謝您。

+0

如何在數據庫中定義外鍵?提示:EF使用與數據庫相同的規則(除了它不支持唯一鍵)。 –

+0

嗨,在數據庫中,我只使用Departments表定義了DepartmentId字段的外鍵關係,並未將其作爲實體包含在域和DbContext中! AccessControl表與其他實體沒有很強的關係,因爲它可以包含屬於各種實體的記錄的規則,由EntityId字段標記! 請注意,AccessControl中的所有三個字段都表示表的主鍵! – yeswest72

+0

因此'PrimaryKey'列被多個實體共享(如果'EntityId具有不同的值)來建立虛擬關係? –

回答

1

如果我正確理解您的問題,則無法在EF中設置此關係。有很多原因導致它無法正常工作,但基礎是:除非您可以在數據庫中設置此關係,否則您無法在EF中設置它。您的關係是數據驅動的,而EF對數據驅動映射的支持非常有限 - 例如,TPH繼承不適用於您的方案。

+0

謝謝,我期待這個答案! – yeswest72