2010-12-04 63 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后关闭乐观并发