【问题标题】:Adding the same entity object to SQL server database将相同的实体对象添加到 SQL Server 数据库
【发布时间】:2017-03-24 08:26:24
【问题描述】:

我尝试使用 for 循环将同一对象添加到表中作为作业实体可能需要多次。我先尝试过这种方式,但它只保存了一条记录。

                for (int i = 0; i < required; i++)
                {
                    _Context.Jobs.AddObject(n);
                }

然后我尝试这种方式认为实体框架可能不会将对象视为不同。

                for (int i = 0; i < required; i++)
                {
                    if (i > 0)
                    {
                        Job additionalJob = new Job();
                        additionalJob = n;
                        _salesContext.Jobs.AddObject(additionalJob);
                    }
                    else
                    {
                        _Context.Jobs.AddObject(n);
                    }
                }

数据库只保存记录。对此的任何帮助将不胜感激。

【问题讨论】:

    标签: c# sql sql-server frameworks


    【解决方案1】:

    类是引用类型。无论 n 是什么,您都在为其设置 additionalJob,这完全是一回事。类使用指向内存空间的指针,因此您所做的只是创建两个指针。添加记录时,EF 只是添加相同的数据。

    不要设置为 n,而是从 n 复制属性。

    即,

    additionaljob.Name = n.Name;
    

    var additonalJob = new Job() { Name = n.Name };
    

    【讨论】:

    • 是的,我认为这是我必须做的,我只是希望现在必须这样做,因为工作实体中有很多属性。我现在就试一试,让你知道我的进展如何。
    • 我遇到过这样的问题,我创建了一个帮助函数,它循环遍历类的属性并将它们复制到目标类。这真的很容易做到,并且会节省大量的打字时间并且更易于维护。
    • 这是个好主意!您的答案也很完美,我现在将其标记为答案。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    相关资源
    最近更新 更多