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
Table。使用 kpm 迁移工具,这将创建带有 AspNetUsers
和 Permissions
.
外键的 relUserPermissions
Table
当我试图通过 LINQ 访问它时,我需要使用 public DbSet<relUserPermissions> relUserPermission { get; set; }
将关系添加到数据库上下文。但是一旦我添加该行,就不再生成 Permissions
的外键,AspNetUsers
的外键仍然是。
要创建关系,您必须同时在 table、
上提供它
试试这个:
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; }
}
在权限中添加此 属性 class
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; }
我目前正在使用 Entity Framework 7.0.0-beta3 并且正在尝试在两个表之间创建多对多关系。为此,我使用
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
Table。使用 kpm 迁移工具,这将创建带有 AspNetUsers
和 Permissions
.
relUserPermissions
Table
当我试图通过 LINQ 访问它时,我需要使用 public DbSet<relUserPermissions> relUserPermission { get; set; }
将关系添加到数据库上下文。但是一旦我添加该行,就不再生成 Permissions
的外键,AspNetUsers
的外键仍然是。
要创建关系,您必须同时在 table、
上提供它试试这个:
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; }
}
在权限中添加此 属性 class
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; }