Аудит в Entity Framework

После прохождения Entity Framework у меня есть пара вопросов по внедрению аудита в Entity Framework.

Я хочу хранить значения каждого столбца, который создается или обновляется в другой таблице аудита.

Прямо сейчас я вызываю SaveChanges (false), чтобы сохранить записи в БД (все равно изменения в контексте не сбрасываются). Тогда получите добавленное | измененные записи и цикл через GetObjectStateEntries. Но не знаю, как получить значения столбцов, где их значения заполняются хранимым процессом. то есть, созданный, измененный дата и т. д

Ниже приведен пример кода, над которым я работаю.

// Get the changed entires( ie, records)
IEnumerable<ObjectStateEntry> changes = context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified);

// Iterate each ObjectStateEntry( for each record in the update/modified collection)
foreach (ObjectStateEntry entry in changes)
{
    // Iterate the columns in each record and get thier old and new value respectively
    foreach (var columnName in entry.GetModifiedProperties())
    {
        string oldValue = entry.OriginalValues[columnName].ToString();
        string newValue = entry.CurrentValues[columnName].ToString();

        // Do Some Auditing by sending entityname, columnname, oldvalue, newvalue
    }
}

changes = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added);

foreach (ObjectStateEntry entry in changes)
{
    if (entry.IsRelationship) continue;
    var columnNames = (from p in entry.EntitySet.ElementType.Members
                       select p.Name).ToList();

    foreach (var columnName in columnNames)
    {
        string newValue = entry.CurrentValues[columnName].ToString();

        // Do Some Auditing by sending entityname, columnname, value
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос