2010-12-04 153 views
5

嗨,我是在C#中新,我想請問如何寫這個代碼更prety如何寫得很漂亮?

public void Update(Product pr) 
    { 
     Product prod = GeProductById(pr.ProductID); 
     prod.Name  = pr.Name; 
     prod.Count  = pr.Count; 
     prod.InputPrice = pr.InputPrice; 
     prod.InputDate = pr.InputDate; 
     prod.OutPrice = pr.OutPrice; 
     prod.InputPriceByCurrency = pr.InputPriceByCurrency; 
     prod.InputPriceCurrency  = pr.InputPriceCurrency; 
     prod.ComeOwner = pr.ComeOwner; 
     prod.GroupID = pr.GroupID; 
     prod.Discount = pr.Discount; 

     _context.SubmitChanges(); 
    } 

所有它不只是所有屬性複製除ID。我可以很快寫出來嗎? Thanx和對不起我的英語不好

+1

這有什麼錯呢?似乎完全可讀,除了奇怪的標籤和名字。直接保存`pr`會更好。你在這裏使用框架嗎? – Kobi 2010-12-04 15:39:55

+1

@Kobi是的)但如果它將是10或20個屬性))我想寫一下。 Thanx的迴應 – 2010-12-04 15:41:46

+0

那麼你會通過反射,但我不會建議這樣做... – 2010-12-04 15:43:04

回答

4

看來還有更多。爲什麼不能將pr原樣保存到數據存儲?看起來你可能會低效地使用ORM,雖然我們從這段代碼的範圍看不到這個理由。

在一個更一般的說明,你可能有這樣的情況下像automapper運氣。雖然,說實話,我想稍微重新研究一下你如何使用ORM,在這裏不需要這樣做。

根據評論到目前爲止,我還想指出,像這樣的漫長而無聊的映射函數沒有什麼本質上的錯誤。即使它有20個屬性或200個屬性。如果它只寫了一次,很容易閱讀和理解它正在做什麼,做它做得很好等等,那麼它不是一個糟糕的代碼片段。代碼並不總是漂亮,並不需要。很容易被誘惑做更聰明的事情來讓代碼變得更酷或者更有趣,但是當談到稍後支持代碼時,聰明並不總是更好。

4

正如大衛在您之前所說的,可能是錯誤地使用了ORM。

也許這篇文章解釋updates in Linq-To-Sql可能會幫

基本上你可以調用方法連接到外部實體附加到當前上下文和的SubmitChanges後關閉樂觀併發