我目前正在使用Entity Framework 7.0.0-beta3,并尝试在两个表之间创建多对多关系。为此,我使用The answer of this question中的语法,减去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; }
将关系添加到数据库上下文。但是,一旦我添加该行,就不再生成Permissions
的外键,AspNetUsers
的外键仍然是。
答案 0 :(得分: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;}
答案 1 :(得分:0)
虽然有点烦人,但必须这样做,现在我能够通过将Permissions.PermissionId
重命名为Permissions.Id
来解决问题。不是一个很好的解决方案,我不知道为什么这会影响任何事情(我之前通过Fluent API添加了PermissionId
作为键),但是它正在运行。
答案 2 :(得分:0)
添加导航属性,如下图所示
public ApplicationUser User { get; set; }
public Guid PermissionId { get; set; }
public Permissions Permission { get; set; }
public virtual Permissions Permission { get; set; }