2015-05-06 21 views
0

我目前正在使用實體框架7.0.0-beta3,並試圖在兩個表之間創建多對多關係。對於我使用的語法從The answer of this question,減去ICollections:EF7:添加到數據庫上下文時不會生成外鍵

public class Permissions 
{ 
    public Guid PermissionId { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 
public class relUserPermissions 
{ 
    public string UserId { get; set; } 
    public ApplicationUser User { get; set; } 
    public Guid PermissionId { get; set; } 
    public Permissions Permission { get; set; } 
} 

ApplicationUser是指AspNetUsers表。使用kpm遷移工具,這將創建帶有外鍵的relUserPermissions表,其中包括AspNetUsersPermissions

正如我試圖通過LINQ訪問這個,我需要使用public DbSet<relUserPermissions> relUserPermission { get; set; }將關係添加到數據庫上下文。但是,一旦我添加該行,將不再生成Permissions的外鍵,外鍵爲AspNetUsers仍然是。

回答

0

添加該屬性雖然這是一個有點討厭,必須這樣做,現在我可以通過將Permissions.PermissionId重命名爲Permissions.Id來解決問題。不是一個很好的解決方案,我不知道爲什麼這會影響任何東西(我之前通過Fluent API添加了PermissionId作爲關鍵),但它工作正常。

0

爲了創建關係,你必須提供這兩個表,

試試這個:

public class Permissions 
{ 
    public Guid PermissionId { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public IList<relUserPermissions> relUserPermission {get; set;} 
} 
public class relUserPermissions 
{ 
    public string UserId { get; set; } 
    public ApplicationUser User { get; set; } 
    public Guid PermissionId { get; set; } 
    public Permissions Permission { get; set; } 
} 

在權限類

public Ilist<relUserPermisions> relUserPermission {get; set;} 
+0

我已經試過了,用ICollection代替了Ilist。不工作。儘管如此,我發現了一個解決方法。 –

相關問題