Аудит в 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
}
}