嗨,我是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并抱歉我的英语不好
答案 0 :(得分:4)
似乎还有更多。为什么不能将pr
保存到数据存储中?看起来你可能没有效率地使用ORM,虽然可能有充分的理由让我们无法从这段代码的范围中看到。
更一般地说,在这样的情况下,你可能会遇到像automapper这样的事情。虽然,老实说,我认为通过对你如何使用ORM进行一些重新处理,这里不需要它。
根据迄今为止的评论,我还要指出,像这样长而枯燥的映射函数没有任何内在错误。即使它是20个属性或200个属性。如果它只写了一次,很容易阅读和理解它正在做什么,做它做得好,等等,那么这不是一段糟糕的代码。代码并不总是很漂亮,并且不需要。很容易想要做一些更聪明的事情来使代码更酷或更有趣,但是在以后支持该代码时,聪明并不总是更好。
答案 1 :(得分:4)
正如David所说,你可能错误地使用了ORM。
也许这篇解释updates in Linq-To-Sql的文章可能有所帮助
基本上你可以调用Attach方法将外部实体附加到当前上下文,然后调用SubmitChanges来关闭乐观并发