2016年10月12日 星期三

Q&A:Entity Framework更新資料表部分欄位

Tool:Visual Studio 2015 Ultimate Update 3
OS:Windows 10
.NET Framework : 4.6.x
Entity Framework 6.x

Q:如何在Entity Framework 開發方式中,只更新資料表部分欄位?

A:使用更新資料表欄位時,以Northwind資料庫Categories資料表為例,通常我們會這樣寫 :

NorthwindEntities db = new NorthwindEntities( );
var c = db.Categories.Find( 1 );
c.CategoryName = "Beverages999";
c.Description = "Soft drinks, coffees, teas, beers, and ales999";
db.SaveChanges( );

但這樣會同時更新CategoryName與Description欄位的值。

若為了某些理由,我們只想要更新CategoryName而不想更新Description欄位,這時可以這樣寫,在呼叫SaveChanges之前,將資料庫對應的屬性之IsModified設定為false:

NorthwindEntities db = new NorthwindEntities( );
var c = db.Categories.Find( 1 );
c.CategoryName = "Beverages999";
c.Description = "Soft drinks, coffees, teas, beers, and ales999";
db.Entry( c ).Property( x => x.Description ).IsModified = false;
db.SaveChanges( );

這樣更新資料庫欄位時,就只會更新CategoryName 。

沒有留言:

總瀏覽量