Вам нужно Информация о вызывающем абоненте
Если вы хотите указать имя вызвавшего вас метода, файл, в котором объявлен этот метод, и номер строки, сделайте что-то вроде этого:
public void SaveChanges(string message,
[System.Runtime.CompilerServices.CallerMemberName] string callerMethod = "",
[System.Runtime.CompilerServices.CallerFilePath] string sourceFile = "",
[System.Runtime.CompilerServices.CallerLineNumber] int lineNumber = 0)
{
try
{
db.SaveChanges();
}
catch (...)
{
// here you can use callerMethod, sourceFile, lineNumber
// as string in your diagnostic message
}
}
Использование:
using (var dbContext = new MyDbContext(...))
{
...
dbContext.SaveChanges(); // all parameters are optional!
}
Необходимо указать явное значение по умолчанию для каждого необязательного параметра.Вы не можете применять атрибуты информации о вызывающем абоненте к параметрам, которые не указаны как необязательные.
Атрибуты информации о вызывающем абоненте не делают параметр необязательным.Вместо этого они влияют на значение по умолчанию, которое передается, когда аргумент пропущен.
Значения информации о вызывающем абоненте передаются в виде литералов в промежуточный язык (IL) во время компиляции.В отличие от результатов свойства StackTrace для исключений, на результаты не влияет запутывание.
В редких случаях, когда вам не нужны значения по умолчанию, вы можете явно указать их:
void ChangeCity(string city)
{
...
DbContext.SaveChanges($"{nameof(ChangeCity)} where city = {city}");
}