3

내 프로젝트는 새로운 호텔 룸을 만들고 데이터베이스에 2 개의 테이블이 업데이트됩니다. 내 테이블은 RoomType 및 RoomFacility라고합니다.관련 테이블을 업데이트하려면 어떻게해야합니까?

RoomType을 성공적으로 업데이트 할 수 있지만 RoomFacility를 업데이트하고 RoomTypeID를 사용하여 새 회의실 시설을 만들려고하면 실패합니다. 나는 항상 RoomFacilityID에 1을 얻는다.

테이블, roomType 및 RoomFacility 모두에 대한 데이터를 업데이트하려면 어떻게해야합니까?

이 내 서비스에 대한 코드가 내 데이터베이스 업데이트하는 것입니다

public void UpdateFacilityInRooms(List<int> FacilityIDs, int RoomTypeID) 
    { 
     List<HotelRoomFacility> hotelRoomFacilities = 
          _HotelRoomFacilityRopository.AsQueryable() 
          .Where(f => f.RoomTypeID == RoomTypeID).ToList(); 

     foreach (int newRoomFacility in FacilityIDs) 
     { 
      if (hotelRoomFacilities.Where(h => h.RoomFacilityID == newRoomFacility).Count() == 0) 
      { 
       HotelRoomFacility facility = new HotelRoomFacility 
       { 
        RoomFacilityID = newRoomFacility, 
        RoomTypeID = RoomTypeID 
       }; 
       _HotelRoomFacilityRopository.Add(facility); 
      } 
     } 
     _HotelRoomFacilityRopository.CommitChanges(); 
    } 




public RoomType NewRoom(int HotelID,int? RoomTypeID, 
         string RoomTypeName, string RoomTypeDescription) 
    { 
     RoomType room = new RoomType(); 
     room.HotelID = HotelID; 
     room.RoomTypeID = RoomTypeID ?? 0; 
     room.RoomtypeName = RoomTypeName; 
     room.RoomTypeDescripton = RoomTypeDescription; 

     _RoomTypeRepository.Add(room); 

     _RoomTypeRepository.CommitChanges(); 

     return room; 
     } 
+0

당신은 엔티티 프레임 워크를 사용하고, 그래? –

+0

예, 저는 EF를 사용하고 있습니다. –

+0

그럼이 질문은 도움이 될 것 같아요 http://stackoverflow.com/q/7609721/1411687 또는 아마도 이것 하나 http://stackoverflow.com/q/13973836/1411687 –

답변

0
public RoomType UpdateRoom(int RoomTypeID, string RoomTypeName, string RoomTypeDescription, List<int> RoomFacilityIDs) 
     { 

      RoomType roomType = (from rt in _RoomTypeRepository.AsQueryable().Include(r => r.HotelRoomFacilities) 
           where rt.RoomTypeID == RoomTypeID 
           select rt).FirstOrDefault(); 

      if (roomType == null) 
       return null; 

      roomType.RoomTypeName = RoomTypeName; 
      roomType.RoomTypeDescripton = RoomTypeDescription; 

      //Add New Room facilities 
      List<HotelRoomFacility> hotelRoomFacilities = _HotelRoomFacilityRopository.AsQueryable().Where(f => f.RoomTypeID == RoomTypeID).ToList(); 
      foreach (int newRoomFacilityID in RoomFacilityIDs) 
      { 
       if (roomType.HotelRoomFacilities.Where(h => h.RoomFacilityID == newRoomFacilityID).Count() == 0) 
       { 
        roomType.HotelRoomFacilities.Add(new HotelRoomFacility 
        { 
         RoomFacilityID = newRoomFacilityID 
        }); 
       } 
      } 


      foreach (HotelRoomFacility roomFacility in hotelRoomFacilities) 
      { 
       if (RoomFacilityIDs.Contains(roomFacility.RoomFacilityID) == false) 
        _HotelRoomFacilityRopository.Delete(roomFacility); 
      } 

      _RoomTypeRepository.Attach(roomType); 
      _RoomTypeRepository.CommitChanges(); 

      return roomType; 
     } 
관련 문제