DbContext.Attach更新断开的实体

时间:2017-11-28 15:36:04

标签: c# entity-framework-core

我有一个父实体已存在的场景,我必须在更新父实体期间添加它的子节点,例如:

var db = new TestContext();
var book = new Book { 
    BookId = 1, // Already exists in the db from previous save operation 
    Author = new Author {
        FirstName = "Charles", 
        LastName = "Dickens" 
    } 
};
db.Attach(book);

我在attach方法中遇到以下错误:

  

实体类型的实例' Book'无法跟踪,因为另一个   已经跟踪了{' Id'}具有相同键值的实例。   附加现有实体时,请确保只有一个实体实例   附加给定键值。考虑使用   ' DbContextOptionsBuilder.EnableSensitiveDataLogging'看到了   冲突的关键值。

1 个答案:

答案 0 :(得分:0)

只需var book = db.Books.Find(1),其中Books是DbSet<Book>的名称,而不是创建新对象。

这将为您提供存储在数据库中的相同实体。