使用以下配置(Audit.Net的一部分)配置Audit.EntityFramework不会导致实体的正确映射。Audit.EntityFramework.Configuration.Setup().ForContext<AuditAudiCCPContext>().UseOptOut();
该方法
public override object InsertEvent(AuditEvent auditEvent)的EntityFrameworkDataProvider.cs返回,没有任何异常,因为它无法找到映射的实体。EntityFrameworkDataProvider.cs的第96行:
var mappedType = _auditTypeMapper?.Invoke(type, entry);其试图将该实体映射到被审计的实体不能产生任何结果。
我尝试了以下其他配置
一个。
Audit.EntityFramework.Configuration.Setup()
.ForContext<AuditAudiCCPContext>(config => config
.ForEntity<SubjectInfo>(_=>_.Ignore(e=>e.Ticket).Ignore(e=>e.LevelSubjectMap))
.AuditEventType("{context}:{database}"))
.UseOptIn();b.这篇文章中的建议-How do I target another database with Audit.Net - Audit.EntityFramework.Core
c.我无法在Setup()上使用方法UseEntityFramework,因为它不可用。
它应该在audit数据库表中创建一个条目,但这并没有发生。也没有例外。
发布于 2019-09-12 03:11:43
您基本上无法配置EntityFramework Data Provider。
您必须调用.UseEntityFramework()扩展方法来配置数据实体和审计实体之间的映射,例如:
using Audit.Core;
Audit.Core.Configuration.Setup()
.UseEntityFramework(_ => _
.AuditTypeExplicitMapper(map => map
.Map<SubjectInfo, SubjectInfo_Audit>()
.Map<xxxx, xxxx_Audit>()));还可以here一些配置示例。
https://stackoverflow.com/questions/57888875
复制相似问题