Auditoría en Entity Framework

Después de revisar Entity Framework, tengo un par de preguntas sobre la implementación de la auditoría en Entity Framework.

Quiero almacenar los valores de cada columna que se crean o actualizan en una tabla de auditoría diferente.

En este momento, estoy llamando a SaveChanges (falso) para guardar los registros en la base de datos (aún los cambios en el contexto no se restablecen). A continuación, obtener el añadido | registros modificados y en bucle a través de GetObjectStateEntries. Pero no sé cómo obtener los valores de las columnas donde sus valores se llenan mediante proc almacenado. es decir, createdate, modifieddate etc.

A continuación se muestra el código de ejemplo en el que estoy trabajando.

// 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
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta