2010-03-13 55 views
0

我有這樣的代碼優化MVC編碼

 var prj = _dataContext.Project.FirstOrDefault(p => p.isPopular == true); 
     if (prj != null) 
     { 
      prj.isPopular = false; 
      _dataContext.SaveChanges(); 
     } 


     prj = Details(id); 
     prj.isPopular = true; 
     _dataContext.SaveChanges(); 

的想法,我有在現場isPopular值true只有一條記錄,所以我得到它,使假的,那麼我的id來獲取物體,並使其isPopular真。我不喜歡savechanges上的兩個調用。 有什麼想法?

回答

0
var prj = _dataContext.Project.FirstOrDefault(p => p.isPopular == true || p.id ==id); 

prj.Single(p => p.isPpopular == true).IsPopular = false; 

prj.Single(p => p.isPpopular == id).IsPopular = true; 

_dataContext.SaveChanges(); 
+1

您的代碼將無法編譯。如果在沒有IsPopular == true的記錄時拋出異常,如果將「FirstOrDefault()」更改爲「Where()」。 – 2010-03-13 17:05:41

+0

我修好了,我們都==一次又一次。 ;) – jfar 2010-03-13 17:07:22

+0

@jfar,這不是問題。沒有看到。 – 2010-03-13 17:08:12

0
var prj = _dataContext.Project.FirstOrDefault(p => p.isPopular == true); 
    if (prj != null) 
    { 
     prj.isPopular = false; 
    } 


    var prj2 = Details(id); 
    prj2.isPopular = true; 
    _dataContext.SaveChanges(); 

當然,你應該找到更好的「prj2」變量名稱。