У меня есть таблица «Пользователи и вызовы» с отношением «многие ко многим». То, что я пытался сделать, это сопоставить эти две таблицы. И я на полпути добился успеха, так как я могу сопоставить эти две таблицы, чтобы получить результат:
{
"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()));