Я внедряю AuditTrail для моего проекта.
Я отправляю свою сущность в эту функцию.
public AuditTrail GetAudit(DbEntityEntry entry)
{
AuditTrail audit = new AuditTrail();
audit.UserName = "Admin";
audit.TableName = GetTableName(entry);
audit.TimeStamp = DateTime.Now.ToString("dd MM yyyy HH:mm:ss");
if (entry.State == System.Data.Entity.EntityState.Added)
{
var newValues = new StringBuilder();
SetAddedProperties(entry, newValues);
audit.NewValue = newValues.ToString();
audit.Action = AuditActions.Added.ToString();
}
return audit;
}
Если добавлен EntityState, эта функция выполняется.
private void SetAddedProperties(DbEntityEntry entry, StringBuilder newData)
{
foreach (var propertyName in entry.CurrentValues.PropertyNames)
{
var newVal = entry.CurrentValues[propertyName];
if (newVal != null)
{
newData.AppendFormat("{0}={1} , ", propertyName, newVal);
}
}
if (newData.Length > 0)
newData = newData.Remove(newData.Length - 3, 3);
}
Пока все в порядке.Я могу добавить журнал в таблицу AuditTrail без свойств навигации.Но у меня есть 2 свойства навигации в моей сущности.Это выпадающий список и заполнение из других таблиц.
Свойства навигации не загружаются в entry.Currents.PropertyNames.Это запись в таблицу другой записи.
Например;
