如果更新发生,则重复行

时间:2012-09-11 06:17:14

标签: 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, 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上发生更新,Trigger会使用新ID复制整行。我的问题是如何在休眠中做到这一点?我不想使用数据库触发器。我希望直接在C#中使用hibernate来做到这一点。这可能吗?

1 个答案:

答案 0 :(得分:0)

看看NHibernate的事件系统,或者可能是旧的IInterceptor概念: http://nhibernate.info/doc/nh/en/index.html#events

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