如何保存 Audit.Net 的实体关系?
How To Save Entity Relations With Audit.Net?
我正在使用 Audit.Net (Audit.EntityFramework),我想知道如何保存实体的关系?
这是我的配置
Audit.Core.Configuration.Setup()
.UseEntityFramework(x => x
.AuditTypeMapper(typeName => typeof(AuditLog))
.AuditEntityAction<AuditLog>((ev, ent, auditEntity) =>
{
auditEntity.Table = ent.Table;
auditEntity.AuditDate = DateTime.UtcNow;
auditEntity.Action = ent.Action;
auditEntity._Changes = ent.Changes;
auditEntity._Entries = ev.GetEntityFrameworkEvent().Entries;
auditEntity.Success = ev.GetEntityFrameworkEvent().Success;
auditEntity._ColumnValues = ent.ColumnValues;
auditEntity._PrimaryKey = ent.PrimaryKey;
}));
考虑以下关系
public class Blog
{
public int Id { set; get; }
public string Title { set; get; }
public string AuthorName { set; get; }
public IList<Post> Posts { set; get; }
}
public class Post
{
public int Id { set; get; }
public string Title { set; get; }
public string Content { set; get; }
public virtual Blog Blog { set; get; }
}
我想知道删除 Post
对象时 Blog
的数据是什么。
Entity Framework Data Provider 为您提供了创建审计 table 的选项。因此,您必须根据您的计划创建一个 Audit
table 并保存您需要的相关和额外数据。
如果 Blog
包含在正在删除的 Post
实例中,您应该在审核事件中获得该信息。
例如,如果你这样删除:
var post = dbContext.Posts
.Include(p => p.Blog)
.First(p => p.Id == 1);
dbContext.Posts.Remove(post);
dbContext.SaveChanges();
并且您在 Audit.EF 配置中包含了实体对象:
Audit.EntityFramework.Configuration.Setup()
.ForAnyContext(_ => _
.IncludeEntityObjects()
);
您应该可以在 AuditEntityAction
/ CustomAction
:
上获取博客信息
Audit.Core.Configuration.Setup()
.UseEntityFramework(x => x
.AuditTypeMapper(typeName => typeof(AuditLog))
.AuditEntityAction<AuditLog>((ev, ent, auditEntity) =>
{
if (ent.Entity is Post post)
{
var blog = post.Blog;
}
// OR, if you don't IncludeEntityObjects:
if (ent.GetEntry().Entity is Post post)
{
}
//...
}));
我正在使用 Audit.Net (Audit.EntityFramework),我想知道如何保存实体的关系?
这是我的配置
Audit.Core.Configuration.Setup()
.UseEntityFramework(x => x
.AuditTypeMapper(typeName => typeof(AuditLog))
.AuditEntityAction<AuditLog>((ev, ent, auditEntity) =>
{
auditEntity.Table = ent.Table;
auditEntity.AuditDate = DateTime.UtcNow;
auditEntity.Action = ent.Action;
auditEntity._Changes = ent.Changes;
auditEntity._Entries = ev.GetEntityFrameworkEvent().Entries;
auditEntity.Success = ev.GetEntityFrameworkEvent().Success;
auditEntity._ColumnValues = ent.ColumnValues;
auditEntity._PrimaryKey = ent.PrimaryKey;
}));
考虑以下关系
public class Blog
{
public int Id { set; get; }
public string Title { set; get; }
public string AuthorName { set; get; }
public IList<Post> Posts { set; get; }
}
public class Post
{
public int Id { set; get; }
public string Title { set; get; }
public string Content { set; get; }
public virtual Blog Blog { set; get; }
}
我想知道删除 Post
对象时 Blog
的数据是什么。
Entity Framework Data Provider 为您提供了创建审计 table 的选项。因此,您必须根据您的计划创建一个 Audit
table 并保存您需要的相关和额外数据。
如果 Blog
包含在正在删除的 Post
实例中,您应该在审核事件中获得该信息。
例如,如果你这样删除:
var post = dbContext.Posts
.Include(p => p.Blog)
.First(p => p.Id == 1);
dbContext.Posts.Remove(post);
dbContext.SaveChanges();
并且您在 Audit.EF 配置中包含了实体对象:
Audit.EntityFramework.Configuration.Setup()
.ForAnyContext(_ => _
.IncludeEntityObjects()
);
您应该可以在 AuditEntityAction
/ CustomAction
:
Audit.Core.Configuration.Setup()
.UseEntityFramework(x => x
.AuditTypeMapper(typeName => typeof(AuditLog))
.AuditEntityAction<AuditLog>((ev, ent, auditEntity) =>
{
if (ent.Entity is Post post)
{
var blog = post.Blog;
}
// OR, if you don't IncludeEntityObjects:
if (ent.GetEntry().Entity is Post post)
{
}
//...
}));