[英]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
表,該表具有指向AspNetUsers
和Permissions
外鍵。
當我嘗試通過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.