首页 > 解决方案 > 排除 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*/

标签: c#asp.net-mvc

解决方案


好的,这个问题的解决方案不止一种。正如我在评论中所说,如果您希望在创建产品副本时 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;
    }
}

但是在复制参考值时要小心。您可能想看看这篇文章浅拷贝与深拷贝


推荐阅读