Я переопределил метод SaveChanges в DBContext для обнаружения таблиц с информацией «Создано / Обновление» и автоматически обработал обновление, например так:
public partial class MyContext
{
private readonly ITokenService _tokenService;
public MyContext(ITokenService tokenService, DbContextOptions options) : base(options)
{
_tokenService = tokenService;
}
public override int SaveChanges()
{
var entities = ChangeTracker.Entries().Where(entry => entry.Entity is ITrackingEntities);
foreach (var entityEntry in entities)
{
if (entityEntry.State == EntityState.Added)
{
((ITrackingEntities) entityEntry.Entity).CreatedBy = _tokenService.LoginUserId;
((ITrackingEntities) entityEntry.Entity).CreatedDateUtc = DateTime.UtcNow;
}
((ITrackingEntities) entityEntry.Entity).UpdatedBy = _tokenService.LoginUserId;
((ITrackingEntities) entityEntry.Entity).UpdatedDateUtc = DateTime.UtcNow;
}
return base.SaveChanges();
}
}
Однако всякий раз, когда я пишу некоторый код EF, который выдаетисключение в моем уровне хранилища, разрыв строки исключения происходит в моем переопределенном методе SaveChanges()
, а не в вызывающем методе хранилища, что затрудняет отладку при многократном вызове SaveChanges()
в методе.
Есть ли способ указать отладчику не прерывать строку в моем переопределенном методе SaveChanges()
, а скорее в вызывающей стороне этого метода?