Мой проект C# Windows Application, я использую Entity Framework 5 и .net 4.5.Entity Framework сохраняет только последнюю строку (основные данные)
У меня есть номера и модуль кровати, которые можно добавлять, редактировать и удалять номера (ов) и/или (ые) кровать
на моей форме У меня есть поле для RoomNo и станции, а также Добавить и Удалить добавлять/удалять слой (ы) в DataGridView
DB Structure
Rooms (table)
PK_Rooms
FK_Station
RoomNo
Beds (table)
PK_Beds
FK_Rooms
BedNo
FullRoomNo (concat only of Roomno and Bedno)
RoomStatus
ниже мой метод Add, чтобы добавить комнату и кровати в DB
M3dEntities m3d = new M3dEntities();
rooms rooms = new rooms();
beds beds = new beds();
string RoomNo = RoomNoTxt.Text;
int StationID = Int32.Parse(StationCmb.SelectedValue.ToString());
var roomnoexist = from g in m3d.rooms
where g.RoomNo == RoomNo
select g;
if (roomnoexist.Any())
{
MessageBox.Show("Room No. Already Exist!");
}
else
{
rooms.RoomNo = RoomNo;
rooms.FK_Stations = StationID;
m3d.rooms.AddObject(rooms);
}
foreach (DataGridViewRow row in BedsDataGridView.Rows)
{
beds.Bedno = row.Cells[0].Value.ToString();
beds.FullRoomNo = row.Cells[1].Value.ToString();
beds.RoomStatus = "Available";
m3d.beds.AddObject(beds);
}
m3d.SaveChanges();
(Ex: добавить номер 1201 с 4-мя кроватями) Onl y последний ряд постели сохраняется в DB.
Мои вопросы:
- Почему только сохранить последнюю строку?
- Как сохранить все ряды на кровати?
- Как я могу это сделать для метода редактирования (Чтобы добавить еще одну кровать или удалить кровать в текущей комнате)?
Что такое 'метод m3d.beds.AddObject'? –
Следуйте этой статье msdn шаг за шагом, и вы узнаете больше об инфраструктуре сущности и детализации. [Связывание данных с WinForms] (https://msdn.microsoft.com/en-us/data/jj682076.aspx) –
Вы должны создать новые объекты «кроватей» внутри цикла. Теперь вы повторно используете один объект. Также сделайте себе одолжение и используйте уникальные имена для классов/объектов и множественные имена для коллекций. –