2013-03-08 32 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 ... – 2013-03-08 20:25:33

+0

也許標識是標識列? – m0s 2013-03-08 20:27:14

+0

您正在調用插入方法並嘗試更新。您應該搜索該實體並設置新值。之後,只需調用SaveChanges()方法。 – 2013-03-08 20:27:20

回答

0

我不確定這實際上是ADO.NET,它似乎更像是實體框架或LINQ到SQL。

這也不是很清楚你想要做什麼。 如果你正在嘗試添加一個新的房間到數據庫,我會建議設置一些屬性,否則你只是插入一個空房間。

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

如果這是你正在嘗試做的,那麼你就不需要指定房間ID(如果ID列設置爲自動遞增是。)

,如果你試圖更新一個房間,而不是插入一個新的,你可以做這樣的事情:

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

再次,它不是完全清楚究竟你正在嘗試這樣做,如果我錯了,認罪再細說一點。