using System; using System.Collections; using System.Collections.Generic; using NHibernate.Engine; using NHibernate.Persister.Entity; namespace NHibernate.Event { public partial interface IEventSource : ISessionImplementor, ISession { /// <summary> Get the ActionQueue for this session</summary> ActionQueue ActionQueue { get; } /// <summary> /// Is auto-flush suspended? /// </summary> bool AutoFlushSuspended { get; } //6.0 TODO Remove it (it's added directly to ISessionImplementor) /// <summary> /// Instantiate an entity instance, using either an interceptor, /// or the given persister /// </summary> object Instantiate(IEntityPersister persister, object id); /// <summary> Force an immediate flush</summary> void ForceFlush(EntityEntry e); /// <summary> Cascade merge an entity instance</summary> void Merge(string entityName, object obj, IDictionary copiedAlready); /// <summary> Cascade persist an entity instance</summary> void Persist(string entityName, object obj, IDictionary createdAlready); /// <summary> Cascade persist an entity instance during the flush process</summary> void PersistOnFlush(string entityName, object obj, IDictionary copiedAlready); /// <summary> Cascade refresh an entity instance</summary> void Refresh(object obj, IDictionary refreshedAlready); /// <summary> Cascade delete an entity instance</summary> void Delete(string entityName, object child, bool isCascadeDeleteEnabled, ISet<object> transientEntities); // 6.0 TODO: yield null if already suspended. /// <summary> /// Suspend auto-flushing, yielding a disposable to dispose when auto flush should be restored. Supports /// being called multiple times. /// </summary> /// <returns>A disposable to dispose when auto flush should be restored.</returns> IDisposable SuspendAutoFlush(); } }