Neo*_*net 6 c# entity-framework-core .net-core
是否可以在 .NET Core 中执行Add、等操作AddAsync,Update而无需随后跟踪实体,而无需编写代码来专门将上下文与跟踪实体分离?
// select, its possible to do no trackiing
var audit = _dbContext.Audit.First().AsNoTracking();
// doing an add or update, audit is now tracked unless it's detached
_dbContext.Audit.Add(audit);
int rows = _dbContext.SaveChanges();
_dbContext.Entry(audit).State = EntityState.Detached;
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我有一个 Windows 服务,它消耗RabbitMq消息并写入数据库。RabbitMq通过事件处理程序接收消息。因此,数据库本质上变成了一个单例,即使它是作为瞬态添加的。我每次都可以创建一个新的数据库上下文。但这似乎太过分了。或者,还有更好的方法?
您不应该使用单例 DbContext,因为它不是线程安全的。您可以查看此博客文章,了解管理 DbContext 的不同方法: https://mehdi.me/ambient-dbcontext-in-ef6/