我们正在使用https://github.com/bilal-fazlani/tracker-enabled-dbcontext
创建更改的审计跟踪。我们还想将插入记录到新记录的轨迹中。我们可以循环通过刚添加的实体,但似乎没有办法获得刚刚添加的实体的ID?
一年前有一篇文章写道,这是一个限制/不可能 - https://www.exceptionnotfound.net/entity-change-tracking-using-dbcontext-in-entity-framework-6/
但也有一些评论表明有一种方法。我们研究了那些和相关的代码但是没有更清楚,是否有可能使用这个框架正确地审计插入?
foreach (var entryAdded in addedEntities)
{
var entityKeyObject = objectContext.ObjectStateManager.GetObjectStateEntry(entryAdded.Entity).EntityKey;
var entityKey = entityKeyObject.EntityKeyValues.Length >= 1 ? entityKeyObject.EntityKeyValues[0].Value : 0;
// insert into audit log here..
}
答案 0 :(得分:0)
是的,可以为刚添加的实体插入ID。
简而言之,您只需要处理两个事件:
可以使用链接找到所有代码。所以我无法回答如何使用这个库,但至少,我可以确保你100%可能。
另一种方法是使用另一个Entity Framework Audit Library
免责声明:我是该项目的所有者Entity Framework Plus
维基:EF+ Audit
此库允许您审核&将信息保存在数据库中。默认情况下,它已经支持添加ID。
// using Z.EntityFramework.Plus; // Don't forget to include this.
var ctx = new EntityContext();
// ... ctx changes ...
var audit = new Audit();
audit.CreatedBy = "ZZZ Projects"; // Optional
ctx.SaveChanges(audit);
// Access to all auditing information
var entries = audit.Entries;
foreach(var entry in entries)
{
foreach(var property in entry.Properties)
{
}
}