c# - 排除 id 字段以将对象复制到另一个对象
问题描述
我想从一个对象中复制一个必须用数据库指定字段 ID 的对象,这意味着我不应该直接定义它。
我找到我的对象并将所有参数复制到另一个对象中,排除 id 字段
但它看起来并没有列出将所有字段复制到另一个对象以仅排除 id 字段的最佳方法。
我已经这样做了,但正在寻找更好的方法
/*duplicate product*/
products product = db.products.Find(id);
products duplicateProduct = new products {
title = product.title,
stock_count=product.stock_count,
price=product.price,
category_id=product.category_id,
context=product.context,
Featured=product.Featured,
ForSale=product.ForSale,
discount_prcent=product.discount_prcent
};
db.products.Add(duplicateProduct);
db.SaveChanges();
/*End duplicate product*/
解决方案
好的,这个问题的解决方案不止一种。正如我在评论中所说,如果您希望在创建产品副本时 ID 值始终彼此不同,则可以使用 Copy Constructor。这是代码片段:
public class Program
{
public static void Main()
{
Product product= new Product()
{
Property1=1,
Property2=2,
ID=3
};
Product copyProduct=new Product(product);
}
}
public class Product
{
public int Property1 {get;set;}
public int Property2 {get;set;}
public int ID {get;set;}
public Product()
{
}
public Product(Product product)
{
Property1=product.Property1;
Property2=product.Property2;
}
}
但是在复制参考值时要小心。您可能想看看这篇文章浅拷贝与深拷贝
推荐阅读
- micronaut - Micronaut HelloWorld 错误:意外错误:非法名称 .$HelloControllerDefinition
- unit-testing - 开玩笑:如何正确测试包含 promise 的 void 函数?
- brightway - Brightway2:“聚合 LCI”ecoinvent 版本和“unit”ecoinvent 版本之间的计算时间差异
- mongodb - 如何使用 MongoDb 聚合获取不匹配的记录值
- sql - SQL 事务自动回滚
- jenkins - 在 jenkins 中配置 LDAP 全局设置
- sql-server - 旧的 SQL 文件仍在使用中
- python - keras loss 必须每批输出一个标量还是整批输出一个标量?
- database-connection - 八达通部署连接字符串未在 DBUP 中更新
- matlab - 从 ValueChangingFcn 中访问其他滑块的值