Я внедрил журнал аудита для каждого действия, сделанного на сервере (добавлено, изменено и удалено). Проблема возникает в измененном, потому что я проверяю каждое свойство, которое было изменено, но некоторые свойства, которые я не хочу проверять. Пример: временная метка или другие. Это то, что я сделал, и работает отлично: 1) Я сделал еще SaveChanges метод() в DbContext 2)Реализация контрольной трассы C#
if (dbEntity.State == EntityState.Modified)
{
foreach (string propertyName in dbEntity.OriginalValues.PropertyNames)
{
if (!Equals(dbEntity.OriginalValues.GetValue<object>(propertyName), dbEntity.CurrentValues.GetValue<object>(propertyName)))
{
var log = new AuditLogDetailEntity()
{
Timestamp = timestamp,
Type = "M", // Modified
EntityName = tableName1,
PrimaryKeyValue = Convert.ToInt32(dbEntity.CurrentValues.GetValue<object>(primaryKeyName)),
PropertyName = propertyName,
OldValue = dbEntity.OriginalValues.GetValue<object>(propertyName) == null ? null : dbEntity.OriginalValues.GetValue<object>(propertyName).ToString(),
NewValue = dbEntity.CurrentValues.GetValue<object>(propertyName) == null ? null : dbEntity.CurrentValues.GetValue<object>(propertyName).ToString()
};
changesCollection.Add(log);
}
}
}`
Это код экстракт, не все несильно. Я мог бы сделать валидацию внутри, прося поля, которые я не хочу проверять, но, есть ли более тщательный способ сделать это? Возможно, добавление некоторых данных в классы или что-то еще. спасибо.
Как? Какую DataAnnotation я должен использовать? Благодаря –
Используйте это так: класс AuditLogDetailEntity { [System.ComponentModel.DataAnnotations.Schema.NotMapped] DateTime TimeStamp {получить; задавать; } // etc } – Simmetric