コード例 #1
0
ファイル: UnitOfWork.cs プロジェクト: rogeralsing/Puzzle.NET
        public virtual void AbortInserted()
        {
            IObjectManager om = this.Context.ObjectManager;

            foreach (object obj in m_listInserted)
            {
                IClassMap classMap = this.Context.DomainMap.MustGetClassMap(obj.GetType());
                //we must roll back autoincreasers
                if (classMap.HasAssignedBySource())
                {
                    foreach (IPropertyMap propertyMap in classMap.GetAllPropertyMaps())
                    {
                        if (propertyMap.IsAssignedBySource)
                        {
                            string prevId = om.GetObjectIdentity(obj);
                            om.SetPropertyValue(obj, propertyMap.Name, 0);
                            this.Context.IdentityMap.UpdateIdentity(obj, prevId);
                        }
                    }
                }
                m_listCreated.Add(obj);
                om.SetObjectStatus(obj, ObjectStatus.UpForCreation);
            }
            m_listInserted.Clear();
        }