C# 在EF 6.1中保存多对多关系

C# 在EF 6.1中保存多对多关系,c#,entity-framework,many-to-many,C#,Entity Framework,Many To Many,我已经阅读了很多关于保存与EF 6.1的多对多关系的主题,但我没有进一步了解。保存预订后,reservationId和facilityId的联接表仍然为空 这些是我的模型: public class Reservation { [Key] public int reservationId { get; set; } //Lijst met Facilities, Many to Many public virtual ICollection<Facili

我已经阅读了很多关于保存与EF 6.1的多对多关系的主题,但我没有进一步了解。保存预订后,
reservationId
facilityId
的联接表仍然为空

这些是我的模型:

public class Reservation
{ 
    [Key]
    public int reservationId { get; set; }

    //Lijst met Facilities, Many to Many
    public virtual ICollection<Facility> FacilitiesList { get; set; }
}

public class Facility
{
    [Key]
    public int FacilityId { get; set; }
    public decimal FacilityPrice { get; set; }
    public string FacilityType { get; set; }

    //Many to Many
    public virtual ICollection<Reservation> reservationList { get; set; }

    public Facility()
    {
        //Instantiate our implementation of ICollection
        this.reservationList = new HashSet<Reservation>();
    }
}
现在我有桌子了。我可以保存设施,并且可以在使用MultiSelectList创建预订时选择它们


为什么联接表总是空的?我应该怎么做才能填写
设施列表
,这样我就可以在我的项目中的任何地方获取这些数据?

因为我对这一点一无所知,所以我不知道我需要初始化和填充列表。感谢@dellywheel为我指明了正确的方向

以下是工作代码:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "ReservationId,ArrivalDate,LeaveDate,CampingSpotId,UserId,PersonsAmount,FacilityType,FacilityPrice")] Reservation reservation, int[] SelectedFacilities) 
    {
        //Instantiate our facilities list!
        reservation.FacilitiesList = new List<Facility>();

        foreach (int facId in SelectedFacilities)
        {
            var facType = _facilityrepository.GetFacilityType(facId);
            var facPrice = _facilityrepository.GetFacilityPricePerDay(facId);
            reservation.FacilitiesList.Add(new Facility { FacilityId = facId, FacilityType = facType, FacilityPrice = facPrice} );
        }

        _reservationrepository.Add(reservation);
        return View() //code omitted 
    }
[HttpPost]
[ValidateAntiForgeryToken]
公共操作结果创建([Bind(Include=“ReservationId,ArrivalDate,LeaveDate,CampingSpotId,UserId,PersonsAmount,FacilityType,FacilityPrice”)]预订预订,int[]SelectedFacilities)
{
//实例化我们的设施列表!
reservation.FacilitiesList=新列表();
foreach(选定设施中的int facId)
{
var facType=\u facilityrepository.GetFacilityType(facId);
var facPrice=_facilityrepository.GetFacilityPricePerDay(facId);
reservation.FacilitiesList.Add(新设施{FacilityId=facId,FacilityType=facType,FacilityPrice=facPrice});
}
_reservationrepository.Add(预订);
return View()//省略了代码
}

您能在保存预订的地方添加代码吗??您排除了我们需要查看的代码的唯一部分!:)是的,检查编辑!代码为ok thx。我可以看到您正在添加
\u reservationrepository.Add(reservation)但不在其与相关
设施列表一起保存到上下文的位置
public ActionResult Create()
    {
        ViewBag.FacilitiesList = new SelectList(_facilityrepository.GetAll(), "FacilityId", "FacilityType");
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "ReservationId,ArrivalDate,LeaveDate,CampingSpotId,UserId,PersonsAmount,FacilityType,FacilityPrice")] Reservation reservation) 
    {
        _reservationrepository.Add(reservation);
        return RedirectToAction("ShowAvailableSpots", new { ArrivalDate = reservation.ArrivalDate, LeaveDate = reservation.LeaveDate, ReservationID = reservation.ReservationId });
    }
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "ReservationId,ArrivalDate,LeaveDate,CampingSpotId,UserId,PersonsAmount,FacilityType,FacilityPrice")] Reservation reservation, int[] SelectedFacilities) 
    {
        //Instantiate our facilities list!
        reservation.FacilitiesList = new List<Facility>();

        foreach (int facId in SelectedFacilities)
        {
            var facType = _facilityrepository.GetFacilityType(facId);
            var facPrice = _facilityrepository.GetFacilityPricePerDay(facId);
            reservation.FacilitiesList.Add(new Facility { FacilityId = facId, FacilityType = facType, FacilityPrice = facPrice} );
        }

        _reservationrepository.Add(reservation);
        return View() //code omitted 
    }