2013-03-08 5 views
0

По какой-то причине метод dbase.SaveChanges() не может обновить базу данных, потому что roomid должен быть пустым. Но отладчик говорит, что room1.id установлен в 2?Модель не обновляет базу данных

Может кто-нибудь, пожалуйста, помогите мне в этом?

private void button1_Click(object sender, EventArgs e) 
{ 
    Room room1 = new Room(); 
    room1.Id = 2; 
    dbase.AddToRoom(room1); 
    dbase.SaveChanges(); 
} 
+2

но ... вы __are__ устанавливаете его на 2 ... –

+0

Может быть, идентификатор - это столбец идентичности? – m0s

+0

вы вызываете метод Insert и пытаетесь его обновить. Вы должны искать объект и устанавливать новые значения. После этого просто вызовите метод SaveChanges(). –

ответ

0

Я не уверен, что это на самом деле ADO.NET, он больше похож на структуру сущности или linq на SQL.

Это также не совсем понятно, что вы пытаетесь сделать. Если вы пытаетесь добавить новую комнату в базу данных, я бы посоветовал установить некоторые свойства, иначе вы просто вставляете пустую комнату.

var room1 = new Room(); 
room1.RoomNumber = 4; 
room1.Available = true; 
//... 
dbase.AddToRoom(room1); 
dbase.SaveChanges(); 

Если это то, что вы пытаетесь сделать, то вам не нужно указать идентификатор комнаты (если столбец ID установлен на автоприращение, что есть.)

если вы пытаюсь обновления комнаты вместо вставки нового один вы можете сделать что-то вроде этого:

var roomToUpdate = dbase.Rooms.Where(x => x.id == id).FirstOrDefault(); 
roomToUpdate.Property ="something"; 
//... 
dbase.Update(roomToUpdate) 
dbase.SaveChanges(); 

Опять же, это не совсем понятно, что именно вы пытаетесь сделать это, если я не прав, мольбы е уточните немного больше.

Смежные вопросы