После прохождения через Entity Framework у меня есть несколько вопросов по реализации аудита в Entity Framework.Аудит в инфраструктуре Entity
Я хочу сохранить каждое значение столбца, которое создано или обновлено, в другую таблицу аудита.
Прямо сейчас я звоню SaveChanges (ложь), чтобы сохранить записи в БД (до сих пор изменения в контексте не сбрасываются). Затем добавьте | измененные записи и цикл через GetObjectStateEntries. Но не знаете, как получить значения столбцов, где их значения заполнены хранимым proc. т. е. создан, модифицирован и т.д.
Ниже приведен пример кода, над которым я работаю.
// 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 } }
Это не очень понятно, что вы ищете здесь- то, что именно вы хотите сделать, что вы не знаю, как это сделать? –
Я хочу выполнить аудит (вставка имени таблицы/имени объекта, имени столбца, значения в таблице аудита при любых изменениях для данного объекта) –