From eb3a5b899165cfa3d07f6fb81c49571ff044758f Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 12 Jan 2026 10:02:56 +0100 Subject: [PATCH] Apply AsNoTracking to raw/interpolated queries in DbRepository QueryRaw and QueryInterpolated now always return results with AsNoTracking applied, ensuring entities are not tracked by EF Core. Both methods are now virtual, allowing for easier customization in derived classes. This change improves performance and prevents unintended side effects from entity tracking. --- DigitalData.Core.Infrastructure/DbRepository.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DigitalData.Core.Infrastructure/DbRepository.cs b/DigitalData.Core.Infrastructure/DbRepository.cs index b95be53..c458477 100644 --- a/DigitalData.Core.Infrastructure/DbRepository.cs +++ b/DigitalData.Core.Infrastructure/DbRepository.cs @@ -100,9 +100,9 @@ namespace DigitalData.Core.Infrastructure #region Read public virtual IQueryable Query => Entities.AsNoTracking(); - public IQueryable QueryRaw([NotParameterized] string sql, params object[] parameters) => Entities.FromSqlRaw(sql, parameters); + public virtual IQueryable QueryRaw([NotParameterized] string sql, params object[] parameters) => Entities.FromSqlRaw(sql, parameters).AsNoTracking(); - public IQueryable QueryInterpolated([NotParameterized] FormattableString sql) => Entities.FromSqlInterpolated(sql); + public virtual IQueryable QueryInterpolated([NotParameterized] FormattableString sql) => Entities.FromSqlInterpolated(sql).AsNoTracking(); public virtual IQueryable Where(Expression> expression) => Entities.AsNoTracking().Where(expression);