Используя EF (сначала код) в нашем слое данных, нам необходимо включить функции аудита для изменений сущностей. Я смог выяснить, как успешно зафиксировать изменения свойств типа значения с помощью Change Tracker. Я также теперь думаю, что понял, как получить информацию, необходимую мне для регистрации отношений «многие-ко-многим».Аудит аудита сущностей для 1-многих отношений и захвата связанного объекта
Моя оставшаяся проблема заключается в том, как регистрировать отношения «один ко многим» и фиксировать информацию об объекте.
В следующем Сущности предположим, что Этничность изменилась.
public class Person
{
public Guid Id { get; set; }
public Guid? EthnicityId { get; set; }
public Ethnicity Ethnicity { get; set; }
}
За кулисами в SaveChanges он только дает вам список пар ключ-значение для измененных свойств. Таким образом, вы все равно получите в этом случае: «EntityId», «{GUID HERE}». Я могу записать, что руководство изменено, но эта информация практически бесполезна для пользователя. То, что мне нужно для захвата, - это также отображаемое имя (что-то, что все наши сущности реализуют) и записывать его также.
Единственного, что я могу думать: (оговорка это чувствует, как ужасное решение для меня)
- Посмотрите на имени свойства.
- Если строка заканчивается на Id, но не является только «Id», то Trim it off.
- Используйте строку имени свойства Trimmed, чтобы получить ссылку на этот тип (Enthnicity в этом случае)
- Используйте EF снова, чтобы получить идентификатор для этого типа с помощью Guid.
- Включите объект как наш базовый тип, который имеет DisplayName.
- Получите отображаемое имя и добавьте его в Журналы.
Я действительно очень не хочу этого делать. Я не могу себе представить, что это не было раньше. Нет ли там какой-либо магии, которая откроет ссылку на базовую сущность?
Спасибо!