簡體   English   中英

EF7:添加到數據庫上下文時不會生成外鍵

[英]EF7: Foreign Keys are not generated when adding to Database Context

我目前正在使用Entity Framework 7.0.0-beta3,並試圖在兩個表之間創建多對多關系。 為此,我使用的是該問題的答案中的語法,減去ICollections:

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; } public DbSet<relUserPermissions> relUserPermission { get; set; } public DbSet<relUserPermissions> relUserPermission { get; set; } 但是,一旦添加該行,就不再生成Permissions的外鍵, AspNetUsers仍然生成AspNetUsers的外鍵。

要創建關系,您必須在兩個表上都提供它,

嘗試這個:

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; }
}

在Permissions類中添加此屬性

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

盡管有點煩人,但必須這樣做,現在我能夠通過將Permissions.PermissionId重命名為Permissions.Id來解決問題。 這不是一個很好的解決方案,我也不知道為什么這會影響任何事情(我之前通過Fluent API將PermissionId添加為鍵),但是它可以正常工作。

如圖所示添加導航屬性

public ApplicationUser User { get; set; }
public Guid PermissionId { get; set; }
public Permissions Permission { get; set; }
public virtual Permissions Permission { get; set; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM