实体框架核心2.2中的跟踪实体

时间:2018-12-15 19:25:16

标签: c# entity-framework-core

我的目标是添加代码,以便在调用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...
    }
  1. 我正在尝试找出这是否仍是最好的方法
  2. DbContext SaveChanges()不会根据情况返回所有类型的不同整数。我现在不想负责处理所有这些事情。
  3. 如果这些天有人有更好的方法,请告诉我。

0 个答案:

没有答案