尝试在使用.Net核心和EF核心的项目中实现Audit.Net
示例上下文定义为
[AuditDbContext(Mode = AuditOptionMode.OptOut, IncludeEntityObjects = true, AuditEventType = "{database}_{context}")]
public class MyContext : AuditDbContext
{....Main方法包含以下启动代码
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<MyContext>();
DbInitializer.Initialize(context);
Audit.EntityFramework.Configuration.Setup()
.ForContext<MyContext>(config => config
.IncludeEntityObjects()
.AuditEventType("{context}:{database}"))
.UseOptOut()
.IgnoreAny(t => t.Name.EndsWith("History"));
}....则更新代码为
var personToUpdate = await _context.People.FirstOrDefaultAsync(p => p.ID == id);
using (var audit = AuditScope.Create("Person:Update", () => personToUpdate ))
{
personToUpdate.FirstName = "audited";
_context.SaveChanges();
}保存更改后,auditscope.event.target.new为空
我真的不确定我错过了什么
发布于 2020-12-01 03:43:01
您不需要创建AuditScope,Audit.EntityFramework库将在内部创建AuditScope。您只需要调用SaveChanges()
var personToUpdate = await _context.People.FirstOrDefaultAsync(p => p.ID == id);
personToUpdate.FirstName = "audited";
_context.SaveChanges();https://stackoverflow.com/questions/64972480
复制相似问题