У меня есть db.SaveChangesAsync()
внутри блока try catch, как показано ниже, но, проверяя мои журналы, я вижу журнал DbUpdateConcurrencyException
, но DbUpdateConcurrencyException
происходит от DbUpdateException
.
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
}
Но яобратите внимание на следующие журналы:
Microsoft.EntityFrameworkCore.Update| An exception occurred in the
database while saving changes for context type 'xxx.MyContext'.
Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: Database
operation expected to affect 1 row(s) but actually affected 0 row(s). Data
may have been modified or deleted since entities were loaded.
Разве я не поймал DbUpdateConcurrencyException
, поймав DbUpdateException
, или я полностью пропустил, как работают исключения или nlog?
edit:
my nlog config:
<targets>
<target xsi:type="File" name="all-log" layout="${longdate}|${logger}|${uppercase:${level}} ... />
<target xsi:type="File" name="own-log" ... />
</targets>
<rules>
<logger name="*" minlevel="Error" writeTo="all-log" />
<logger name="Microsoft.*" minlevel="Trace" finale="true" />
<logger name="*" minlevel="Trace" writeTo="own-log" />
</rules>