Mam takie klasy:
CoreRole
public class CoreRole
{
public int Id { set; get; }
public string Name { set; get; }
public ICollection<CoreUserRole> UserRole { get; set; }
}
CoreUser
public class CoreUser
{
public int Id { set; get; }
public string Login { set; get; }
public string Password { set; get; }
public bool IsDelete { set; get; }
public ICollection<CoreUserRole> UserRole { get; set; }
}
CoreUserRole
public class CoreUserRole
{
public int UserId { get; set; }
public CoreUser User { get; set; }
public int RoleId { get; set; }
public CoreRole Role { get; set; }
}
CoreDataContext
public class CoreDataContext : DbContext
{
public DbSet<CoreUser> Users { get; set; }
public DbSet<CoreRole> Roles { get; set; }
public DbSet<CoreUserRole> UsersRoles { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<CoreUserRole>()
.HasKey(ur => new { ur.RoleId, ur.UserId });
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseMySql(@"Server=localhost;database=chat;uid=root;pwd=haslo;port=3307");
}
}
Zapytanie do poprawy:
var query = from u in ctx.Users
select new CoreUser
{
Id = u.Id,
IsDelete = u.IsDelete,
Login = u.Login,
UserRole = from r in ctx.Roles
join ur in ctx.UsersRoles on r.Id equals ur.RoleId
where ur.UserId == u.Id
select new CoreUserRole { Role = r }
};
var res = query.ToList();
Docelowo chciałbym żeby była pobrana lista użytkowników wraz z listą ról, które ten użytkownik posiada.
Błąd, który pojawia się:
UserRepository.cs(83, 32): [CS0266] Nie można niejawnie przekonwertować typu „System.Linq.IQueryable<App.Modules.Core.Models.CoreUserRole>” na „System.Collections.Generic.ICollection<App.Modules.Core.Models.CoreUserRole>”. Istnieje konwersja jawna (czy nie brakuje rzutu?).
Ps. wiem co mówi komunikat, ale nadal nie wiem jak "przekonwertować typ" - zapytanie.
Proszę o pomoc :-)