代码之家  ›  专栏  ›  技术社区  ›  Blake Rivell

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

  •  0
  • Blake Rivell  · 技术社区  · 6 年前

    我的目标是添加代码,以便在调用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...
        }
    
    1. 我想知道这是不是最好的办法
    2. DbContext SaveChanges()不会根据情况返回所有类型的不同整数。我现在不想负责处理这些事情。
    3. 如果这几天有人有更好的办法,请告诉我。
    0 回复  |  直到 6 年前