首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Audit.Net不跟踪新值

Audit.Net不跟踪新值
EN

Stack Overflow用户
提问于 2020-11-24 00:38:16
回答 1查看 66关注 0票数 1

尝试在使用.Net核心和EF核心的项目中实现Audit.Net

示例上下文定义为

代码语言:javascript
复制
  [AuditDbContext(Mode = AuditOptionMode.OptOut, IncludeEntityObjects = true, AuditEventType = "{database}_{context}")]
    public class MyContext : AuditDbContext
    {....

Main方法包含以下启动代码

代码语言:javascript
复制
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"));
                }....

则更新代码为

代码语言:javascript
复制
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为空

我真的不确定我错过了什么

EN

回答 1

Stack Overflow用户

发布于 2020-12-01 03:43:01

您不需要创建AuditScope,Audit.EntityFramework库将在内部创建AuditScope。您只需要调用SaveChanges()

代码语言:javascript
复制
var personToUpdate = await _context.People.FirstOrDefaultAsync(p => p.ID == id);
personToUpdate.FirstName = "audited";
_context.SaveChanges();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64972480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档