Как я могу получить значение внешних столбцов из DbEntityEntry-? - PullRequest
0 голосов
/ 29 ноября 2018

Я внедряю 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.Это запись в таблицу другой записи.

Например;

enter image description here

...