我的目标是添加代码,以便在调用SaveChanges时自动跟踪DbContext文件中的实体。
我创建了一个名为ITrackable的接口(CreatedBy、CreatedDate、UpdatedBy、updatedate)。任何需要跟踪的实体都可以实现它。
在我的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...
}
-
我想知道这是不是最好的办法
-
DbContext SaveChanges()不会根据情况返回所有类型的不同整数。我现在不想负责处理这些事情。
-
如果这几天有人有更好的办法,请告诉我。