public virtual void ManageInsertTriggerAfter(string className, object @object, NeoDatis.Odb.OID
                                              oid)
 {
     if (HasInsertTriggersFor(className))
     {
         NeoDatis.Odb.Core.Trigger.InsertTrigger trigger  = null;
         System.Collections.IEnumerator          iterator = GetListOfInsertTriggersFor(className).GetEnumerator
                                                                ();
         while (iterator.MoveNext())
         {
             trigger = (NeoDatis.Odb.Core.Trigger.InsertTrigger)iterator.Current;
             if (trigger.GetOdb() == null)
             {
                 trigger.SetOdb(new NeoDatis.Odb.Impl.Main.ODBForTrigger(storageEngine));
             }
             try
             {
                 trigger.AfterInsert(Transform(@object), oid);
             }
             catch (System.Exception e)
             {
                 NeoDatis.Odb.Core.IError warning = NeoDatis.Odb.Core.NeoDatisError.AfterInsertTriggerHasThrownException
                                                    .AddParameter(trigger.GetType().FullName).AddParameter(NeoDatis.Tool.Wrappers.OdbString
                                                                                                           .ExceptionToString(e, false));
                 if (NeoDatis.Odb.OdbConfiguration.DisplayWarnings())
                 {
                     NeoDatis.Tool.DLogger.Info(warning);
                 }
             }
         }
     }
 }
예제 #2
0
 public virtual void AddInsertTrigger(System.Type clazz, NeoDatis.Odb.Core.Trigger.InsertTrigger
                                      trigger)
 {
     if (trigger is NeoDatis.Odb.Core.Server.Trigger.ServerInsertTrigger)
     {
         throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.CanNotAssociateServerTriggerToLocalOrClientOdb
                                                    .AddParameter(trigger.GetType().FullName));
     }
     storageEngine.AddInsertTriggerFor(clazz.FullName, trigger);
 }