отключить отслеживание в ядре EF возвращает ошибку отслеживания - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть этот репозиторий, как вы можете видеть:

 public class TestCenterRepository:ITestCenterRepository
    {
        private readonly PetrolTestCenterDbContext _context;


        public TestCenterRepository(PetrolTestCenterDbContext context)
        {
            this._context = context;

        }
        public TestCenter GetById(Guid testCenterId)
            => _context.PetrolTestCenters.FirstOrDefault(u => u.Id == testCenterId && u.Deleted == false);

        public void Add(TestCenter testCenter)
        {
            _context.PetrolTestCenters.Add(testCenter);
            _context.SaveChanges();

        }
}

при вызове функции добавления я получаю эту ошибку:

'The instance of entity type 'TestCenter' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.'

Поэтому я пытаюсь отключить отслеживание в моем контекстекак вы видите:

public class PetrolTestCenterDbContext : DbContext
{


public PetrolTestCenterDbContext(DbContextOptions<PetrolTestCenterDbContext> options) : base(options)
{
    ChangeTracker.LazyLoadingEnabled = false;
    ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;


}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.ApplyConfiguration(new TestCenterConfig());

}

public DbSet<TestCenter> PetrolTestCenters { get; set; }

}

После добавления отключения отслеживания я получаю ту же ошибку.

...