Отображение таблиц «многие ко многим» с дополнительными столбцами Entity Framework - PullRequest
0 голосов
/ 05 мая 2018

У меня есть таблица «Пользователи и вызовы» с отношением «многие ко многим». То, что я пытался сделать, это сопоставить эти две таблицы. И я на полпути добился успеха, так как я могу сопоставить эти две таблицы, чтобы получить результат:

{
    "id": 2,
    "fullName": "test test",
    "username": "test",
    "email": "test@gmail.com",
    "password": "abc123",
    "imgUrl": "",
    "points": 0,
    "level": 1,
    "usersChallenges": [
        {
            "id": 2,
            "title": "Party Monster"
        },
        {
            "id": 3,
            "title": "Do You Even Javascript?"
        }
    ]
}

Но почему-то я не могу понять, как отобразить дополнительные столбцы (StartDate, EndDate) в таблицу Users. Это мои сущности:

public Challenges()
    {
        UsersChallenges = new HashSet<UsersChallenges>();
    }

    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime CreatedAt { get; set; }
    public int DaysNeeded { get; set; }
    public int Reward { get; set; }
    public byte Difficulty { get; set; }
    public int CompletedBy { get; set; }
    public string ImgUrl { get; set; }
    public int Category { get; set; }
    public int Subcategory { get; set; }
    public string Instructions { get; set; }

    public ChallengeCategories CategoryNavigation { get; set; }
    public ChallengeSubcategories SubcategoryNavigation { get; set; }
    public ICollection<UsersChallenges> UsersChallenges { get; set; }
}



public partial class Users
{
    public Users()
    {
        UsersChallenges = new HashSet<UsersChallenges>();
    }

    public int Id { get; set; }
    public string FullName { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string ImgUrl { get; set; }
    public int Points { get; set; }
    public int Level { get; set; }

    public ICollection<UsersChallenges> UsersChallenges { get; set; }
}

Многие-ко-многим:

public partial class UsersChallenges
{
    public int UserId { get; set; }
    public int ChallengeId { get; set; }
    public int State { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }

    public Challenges Challenge { get; set; }
    public Users User { get; set; }
}

Отображение:

CreateMap<Users, UsersDto>()
            .ForMember(dto => dto.UsersChallenges, 
            opt => opt.MapFrom(x => x.UsersChallenges
            .Select(y => y.Challenge).ToList()));
...