ведение журнала транзакций nHibernate - PullRequest
1 голос
/ 07 мая 2019

Наше приложение использует nHibernate, и существует требование регистрировать все изменения в определенной таблице.Мне не нужно регистрировать все запросы, сгенерированные ORM, только данные и дату.

Например, допустим, у меня есть объект с именем Employee:

public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
}

Единственное решение, которое я могу придумать, - это вручную отслеживать изменения (новые, обновленные и удаленные объекты) и записывать эти данные в таблицу.Что-то вроде:

public void SaveEmployees(List<Employee> employees)
{
    employees.ForEach(x => {
        if (x.ID == 0) // add do LOG list as new
        else // add to LOG list as old
    });

    // save employees like usual
    // save LOG list
}

Это не сложно сделать, даже с извлечением старых данных, чтобы увидеть, чего не хватает, но мне было интересно, есть ли лучший способ?

1 Ответ

0 голосов
/ 08 мая 2019

Я думаю, Interceptor может дать вам то, что вам нужно. Вы можете использовать метод OnFlushDirty() или OnSave(), чтобы записать свои изменения. Документация здесь .

...