У меня есть два объекта, связанных через отношение «многие ко многим», в которых родительский объект всегда будет иметь одинаковые дочерние объекты, изменится только количество.
Вот как это моделируется:
public class Camp : BaseModel
{
[Key, DatabaseGenerated( DatabaseGeneratedOption.Identity ), Column( Order = 0 )]
public int CampID { get; set; }
[Required]
public string Name { get; set; }
[MaxLength( 50 )]
public string Location { get; set; }
public virtual ICollection<CampStaffPosition> CampStaffPositions { get; set; }
}
public class StaffPosition
{
[Key, DatabaseGenerated( DatabaseGeneratedOption.Identity ), Column( Order = 0 )]
public int StaffPositionID { get; set; }
public string Position { get; set; }
public virtual ICollection<CampStaffPosition> CampStaffPositions { get; set; }
}
public class CampStaffPosition : BaseModel
{
// This is a Join Table for a many-to-many relationship between Camps and StaffPositions
[Key, Column( Order = 0 )]
public int CampID { get; set; }
[Key, Column( Order = 1 )]
public int StaffPositionID { get; set; }
public virtual Camp Camp { get; set; }
public virtual StaffPosition Position { get; set; }
public int Quantity { get; set; }
}
В лагерях всегда будут одинаковые позиции персонала, но их количество будет варьироваться в зависимости от лагеря. Когда я добавляю лагерь, пользователь также должен заполнить необходимое количество для каждой позиции, но я борюсь с тем, как это сделать.
Во-первых, это лучший способ смоделировать этот сценарий? Во-вторых, как мне показать StaffPositions, чтобы пользователь мог добавить количество? Я попытался добавить их по отдельности, но я не смог получить и лагерь, и позиции FK в таблице соединений. Я действительно запутался с этим, извините.