Переопределение SaveChanges () не вызывается в ASP .NET / EFCore 3.0 - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь переопределить метод SaveChanges в DbContext, но мой код переопределения никогда не вызывается. Точки останова, установленные в коде, никогда не достигаются, но VsCode при поиске ссылок указывает, что он должен быть вызван.

Моя функция переопределения находится в отдельном файле, как частичный класс.

namespace Tracker.Models
{
    public partial class TrackerModel : DbContext {
        public override int SaveChanges() {
            this.SetCreatedUpdatedTimes();    
            return base.SaveChanges();
        }

        public void SetCreatedUpdatedTimes() {
            ChangeTracker.DetectChanges();
            var entries = ChangeTracker
                .Entries()                
                .Where(e => e.State == EntityState.Added || e.State == EntityState.Modified);

            foreach (var entityEntry in entries) {
                entityEntry.Property("UpdatedDate").CurrentValue = DateTime.Now;

                if (entityEntry.State == EntityState.Added) {
                    entityEntry.Property("CreatedDate").CurrentValue = DateTime.Now;
                }
            }
        }
}

Это вызывается из контроллера:

using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using Tracker.Models;
using Microsoft.AspNetCore.Http;

namespace Tracker.Controllers
{
    public partial class DatastoreController : Controller {

        private readonly TrackerModel _context;

        public DatastoreController(TrackerModel context)
        {
            _context = context;
        }

        public ActionResult<Datastore> PostDatastore([FromBody]Datastore Datastore) {
            if (!ModelState.IsValid)
                return BadRequest("Invalid data.");

            _context.Add(Datastore);
            _context.SaveChanges();
            return Datastore;
        }
    }
}

Насколько я могу судить, все выглядит в правильном месте. Я использую EFCore 3.0 и ASP .NET Core 3.0.

Кто-нибудь имел проблемы с этим раньше и есть какие-либо идеи по поводу разрешения?

Я использовал реализацию в следующем блоге какруководство (среди прочего): https://www.ryansouthgate.com/2019/03/18/ef-core-databse-auditing/

Спасибо

...