Я установил отношения «многие ко многим» между двумя объектами, используя подход Code First. К сожалению, я не могу создать выпадающий список, чтобы выбрать другие значения и добавить его к объекту.
Можете ли вы указать ошибку или недостающую часть в моем коде?
public class Vacancy : IAuditable
{
public Vacancy(){}
/// <summary>
/// General properties
/// </summary>
public int Id { get; set; }
{removing code for simplicity}
/// <summary>
/// A vacancy could have many HBO-I Skills.
/// The ICollection contains a list of HBO-I Skills which consist the HBO-I Skills for the particular vacancy.
/// </summary>
public virtual ICollection<VacancyHBOISkill> VacancyHBOISkills { get; set; }
}
public class HBOISkill : IAuditable
{
public HBOISkill(){}
/// <summary>
/// General properties
/// </summary>
public int Id { get; set; }
{removing code for simplicity}
/// <summary>
/// Many vacancies provides 1 or more HBO-I Skills.
/// </summary>
public virtual ICollection<VacancyHBOISkill> VacancyHBOISkills { get; set; }
}
таблица пересечений между вакансиями и HBOISkill
public class VacancyHBOISkill
{
public int VacancyId { get; set; }
public Vacancy Vacancy { get; set; }
public int HBOISkillId { get; set; }
public HBOISkill HBOISkill { get; set; }
}
конфигурация для класса VacancyHBOISkill
public void Configure(EntityTypeBuilder<VacancyHBOISkill> entityBuilder)
{
entityBuilder
.HasKey(vh => new { vh.VacancyId, vh.HBOISkillId });
}
Класс DbContext
{removing code for simplicity}
/// <summary>
/// Defining the database tables within our application
/// </summary
public DbSet<Vacancy> Vacancy { get; set; }
public DbSet<HBOISkill> HBOISkill { get; set; }
public DbSet<VacancyHBOISkill> VacancyHBOISkill { get; set; }
// Adding the Shadow Properties to database schemas when we creating the DbModel
protected override void OnModelCreating(ModelBuilder builder)
{
{removing code for simplicity}
/// <summary>
/// Loading the configuration files for the entities
/// </summary
builder.ApplyConfiguration(new VacancyConfiguration());
builder.ApplyConfiguration(new HBOISkillConfiguration());
builder.ApplyConfiguration(new VacancyHBOISkillConfiguration());
}
Код страницы моей бритвы:
public IActionResult OnGet()
{
ViewData["TypeId"] = new SelectList(_context.VacancyType, "Id", "Name");
ViewData["CategoryId"] = new SelectList(_context.Category, "Id", "Desc");
//ViewData["VacancyHBOSKillId"] = new SelectList(_context.HBOISkill, "Id", "Name");
return Page();
}
[BindProperty]
public Vacancy Vacancy { get; set; }
public IEnumerable<HBOISkill> HBOISkillList { get; set; }
public IEnumerable<SelectListItem> GetHBOISkillSelectList()
{
return HBOISkillList
.Select((hs, i) => new SelectListItem
{
Text = hs.Name.ToString(),
Value = hs.Id.ToString()
//Selected = hs.Id == Vacancy.VacancyHBOISkills.Add(Vacancy.Id, hs.Id)
});
}
Ниже вы найдете фотографии (скриншоты) моей базы данных (таблицы).
Таблицы базы данных
Вакансия
HBOISkill
VacancyHBOISkill
Заранее спасибо,
С уважением,
Халил
P.S. Я изменил имена классов с множественного числа на единственное, эти изменения не видны на (старых) снимках экрана.