如何写得漂亮?

时间:2010-12-04 15:37:34

标签: c# .net linq-to-sql copy

嗨,我是c#的新手,我想问一下如何更多地写这个代码

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并抱歉我的英语不好

2 个答案:

答案 0 :(得分:4)

似乎还有更多。为什么不能将pr保存到数据存储中?看起来你可能没有效率地使用ORM,虽然可能有充分的理由让我们无法从这段代码的范围中看到。

更一般地说,在这样的情况下,你可能会遇到像automapper这样的事情。虽然,老实说,我认为通过对你如何使用ORM进行一些重新处理,这里不需要它。

根据迄今为止的评论,我还要指出,像这样长而枯燥的映射函数没有任何内在错误。即使它是20个属性或200个属性。如果它只写了一次,很容易阅读和理解它正在做什么,做它做得好,等等,那么这不是一段糟糕的代码。代码并不总是很漂亮,并且不需要。很容易想要做一些更聪明的事情来使代码更酷或更有趣,但是在以后支持该代码时,聪明并不总是更好。

答案 1 :(得分:4)

正如David所说,你可能错误地使用了ORM。

也许这篇解释updates in Linq-To-Sql的文章可能有所帮助

基本上你可以调用Attach方法将外部实体附加到当前上下文,然后调用SubmitChanges来关闭乐观并发