C# 如果发生更新,则复制行

C# 如果发生更新,则复制行,c#,hibernate,nhibernate,C#,Hibernate,Nhibernate,我有以下触发因素: INSERT INTO [BUCHUNG] (BOOKUID, BOOKVERNR, BUCHUNGSART_ID, VERANSTALTER, PERSONAL_ID, OPTIONSNUMMER, BUCHUNGSSTATUS, PERSONENZAHL, SERIE, THEMA, STORNO, UPDATE_DATE, UPDATE_USER, BEMERKUNG, V_EMAIL, V_TELEFON, KOSTENSTELLE, SERI

我有以下触发因素:

    INSERT INTO [BUCHUNG] (BOOKUID, BOOKVERNR, BUCHUNGSART_ID, VERANSTALTER, PERSONAL_ID,
    OPTIONSNUMMER, BUCHUNGSSTATUS, PERSONENZAHL, SERIE, THEMA, STORNO, UPDATE_DATE, UPDATE_USER, BEMERKUNG, V_EMAIL, V_TELEFON,
    KOSTENSTELLE, SERIENBOOKUID, THEMA_ENABLED, ABTEILUNG, LIEFERRAUM, PERSONENZAHLEXTERN, ABRECHNUNG, KSTR, RECHKONTO, RECHKST, RECHDST, URSPRUNG_ORIGINAL, ORIGINAL_ID)

    SELECT i.BOOKUID, '0', i.BUCHUNGSART_ID, i.VERANSTALTER, i.PERSONAL_ID,
    i.OPTIONSNUMMER, i.BUCHUNGSSTATUS, i.PERSONENZAHL, i.SERIE, i.THEMA, i.STORNO, GETDATE(), i.UPDATE_USER, i.BEMERKUNG, i.V_EMAIL, i.V_TELEFON,
    i.KOSTENSTELLE, i.SERIENBOOKUID, i.THEMA_ENABLED, i.ABTEILUNG, i.LIEFERRAUM, i.PERSONENZAHLEXTERN, i.ABRECHNUNG, i.KSTR, i.RECHKONTO, i.RECHKST, i.RECHDST, i.URSPRUNG_ORIGINAL,
    i.ORIGINAL_ID


    FROM INSERTED i
    JOIN DELETED d ON i.ID = d.ID
    WHERE i.BOOKVERNR <> d.BOOKVERNR

如果BOOKVERNR发生更新,触发器将使用新ID复制整行。我的问题是如何在hibernate中做到这一点?我不想使用数据库触发器。我想在C语言中用hibernate直接实现这一点。这可能吗?

看看NHibernate的事件系统,或者可能是旧的IInterceptor概念:

使用合适的事件处理程序,您应该能够检测何时将要发生更新,在这种情况下,插入一行旧信息