我的目标是添加代码,以便在调用SaveChanges时自动跟踪DbContext文件中的实体。
我使用(CreatedBy,CreatedDate,UpdatedBy,UpdatedDate)创建了一个名为ITrackable的接口。我需要跟踪的任何实体都可以实现它。
在我的DbContext中,我正在尝试执行以下操作:
public override int SaveChanges()
{
var entries = ChangeTracker.Entries();
foreach (var entry in entries)
{
if (entry.Entity is ITrackable trackable)
{
var now = DateTime.UtcNow;
var user = GetCurrentUser();
switch (entry.State)
{
case EntityState.Modified:
trackable.UpdatedDate= now;
trackable.UpdatedBy= user;
break;
case EntityState.Added:
trackable.CreatedDate = now;
trackable.CreatedBy = user;
trackable.UpdatedDate= now;
trackable.UpdatedBy= user;
break;
}
}
}
// Need to know what to return here...
}