Mon*_*mer 5 c# entity-framework-core
希望以下代码片段足够清楚地解释问题。_db是 的一个实例DbContext。
// this scenario is only for learning purpose
Author a = _db.Authors.Find(1831);
int id = a.AuthorId;
a = null;
Author stub = new Author { AuthorId = id };
_db.Remove(stub);
_db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
上面的代码产生
'无法跟踪实体类型 'Author' 的实例,因为另一个具有相同 {'AuthorId'} 键值的实例已被跟踪。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用“DbContextOptionsBuilder.EnableSensitiveDataLogging”来查看冲突的键值。
如何a免于被跟踪?
有多种方法可以做到这一点,但我发现这是最简单的,因为您正在尝试分离特定的实体。
_db.Entry(a).State = EntityState.Detached
Run Code Online (Sandbox Code Playgroud)
作为一个优点,它不需要更改任何其他代码,包括您获取实体本身的方式。
这一行已经非常清楚地表达了意图。它还允许以下操作:
DbContext当我只想分离某些东西时,我不喜欢更改现有查询的想法。
| 归档时间: |
|
| 查看次数: |
2839 次 |
| 最近记录: |