使用ef核心AsNoTracking进行复制

时间:2018-05-02 08:29:38

标签: entity-framework asp.net-core ef-core-2.0

我正在尝试在ef-core 2.0中复制一个对象。我使用包含anlude的很多对象的查询然后我使用AsNoTracking告诉ef这是一个完全新的对象。

我使用默认设置,我让数据库在插入时生成ID。但是当我使用AsNoTracking-query时,我仍然得到原始对象的id,这给了我一个关于SaveChanges的例外。

SqlException: Cannot insert explicit value for identity column in table 'Plans' when IDENTITY_INSERT is set to OFF.

我实际上并不想更改此设置,如果我遍历对象并将Id更改为0,则可以正常工作。有没有办法在不遍历所有对象的情况下处理这个问题?

有没有更好的方法来创建副本?

1 个答案:

答案 0 :(得分:0)

正如Ivan上面评论的那样没有比这更好的答案所以请查看此链接以获得更好的答案。在我的例子中,我以与之前相同的方式获取对象和层次结构,然后遍历对象并将PK设置为0.

Replicate Entire Row In Entity Framework Core