Entity Framework 4 Аудит изменений - PullRequest
0 голосов
/ 17 октября 2011

У меня есть веб-приложение, использующее EF4.Я немного новичок в EF и теперь пытаюсь реализовать Audit изменений. Я пытался сделать это, перехватывая событие SavingChanges класса контекста, как показано ниже

partial void OnContextCreated()
        {
            this.SavingChanges += new EventHandler(TicketContainer_SavingChanges);

        }

Таким образом, обработчик событий обращается к измененным записям с помощью следующего

this.ObjectStateManager.GetObjectStateEntries(
             EntityState.Added | EntityState.Modified);

Это отлично работает, и я создаю аудит на уровне столбцов для выбранных таблиц.Каждая таблица / сущность имеет поле идентификатора, которое является идентификатором с columnName = "ID".Поэтому в своей процедуре аудита я просто обращаюсь к данным из столбца с именем «Id», чтобы получить идентификатор проверяемой записи.

Проблема, с которой я сталкиваюсь, заключается во время вставки.У новой записи еще нет идентификатора, поскольку она является столбцом идентификаторов в базе данных и всегда равна 0.

Единственное решение, которое я могу придумать, - это использовать GUID для всех идентификаторов. Но есть ли способ реализовать это, используя стандартныеint32 Идентификационные идентификаторы?

спасибо

Ответы [ 3 ]

1 голос
/ 17 октября 2011

Когда мы вставляем данные через EF, при вставке столбец идентификации не генерируется. Чтобы получить столбцы Id of Identity, сначала нужно вставить данные, затем только мы можем получить Id of coulmn.

Пожалуйста, пройдите ниже, что может быть полезно для вас. http://www.codeproject.com/KB/database/ImplAudingTrailUsingEFP1.aspx

0 голосов
/ 17 октября 2011

Идентификационные столбцы не создаются при вставке. Как только данные вставлены, только вы можете получить данные столбца идентичности в EF. Таким образом, вы можете попытаться обойти это, получив Id после вставки, а затем заполнив таблицу аудита этим Id.

0 голосов
/ 17 октября 2011

Сейчас я не знаю, сколько у вас есть сущностей, но в нашей собственной реализации отслеживания аудита мы создали отдельную сущность аудита для каждой сущности, чтобы мы могли связать их вместе с помощью навигационных свойств и позволить базе данных установить ключи идентификации.

Если вы используете наследование для своих объектов аудита, вы можете легко их запросить.

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...