EF core Соединение двух таблиц без столбца первичного ключа - PullRequest
0 голосов
/ 29 января 2019
[Table("User")]
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string UserName { get; set; }

    //I should join with User.UserName and UserRoles.UserName
    public List<UserRoles> UserRolesList { get; set; }
}

[Table("Role")]
public class Role
{
    public int Id { get; set; }
    public string RoleKey { get; set; }
    public string Description { get; set; }
}

[Table("UserRoles")]
public class UserRoles
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public string RoleKey { get; set; }
}



public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {
    }

    public DbSet<User> Users { get; set; }
    public DbSet<Role> Roles { get; set; }
    public DbSet<UserRoles> UserRolesList { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
}

//Getting all users with roles
     var usersWithRoles= _dbContext.Users.Include(b => b.UserRolesList).ToList();

У меня есть 3 таблицы (User, Role и UserRoles), я хочу объединить таблицу User и UserRoles со столбцом UserName.Но EntityFramework не позволяет делать это без первичного ключа столбца.Что я должен делать?

Спасибо.

1 Ответ

0 голосов
/ 31 января 2019

Я думаю, что вы должны создать таблицу UserRole, как показано ниже

[Table("UserRoles")]
public class UserRoles
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public int RoleId { get; set; }
    public User User {get; set;}
    public Role Role {get;set;}
}

Используя вещь, вы можете теперь присоединиться к userId и получить имя пользователя из таблицы пользователей.Также можно присоединиться к таблице ролей по roleId и получить ключ роли.

...