コード例 #1
0
ファイル: UnitOfWork.cs プロジェクト: SanSay157/IT8
        internal void loadProperty(DomainPropSetBase prop)
        {
            if (!m_bLazyLoadEnabled)
            {
                throw new InvalidOperationException("Загрузка объектов отключена");
            }
            DomainPropSetBase objColLoaded = MapperRegistry.GetMapper(prop.Parent.ObjectType).LoadPropCollection(this, prop.Parent.ObjectID, prop.PropName);
            DomainObject      objLocal;

            foreach (DomainObject obj in objColLoaded.Internal_Values)
            {
                objLocal = m_objects.Find(obj.ObjectType, obj.ObjectID);
                if (objLocal != null)
                {
                    // уже загружался
                    if (obj.TS != objLocal.TS)
                    {
                        if (!OnGetObjectConflict(new GetObjectConflictEventArgs(obj, objLocal)))
                        {
                            // TODO: специальный тип исключения
                            throw new ApplicationException();
                        }
                    }
                    prop.Internal_Values.Add(objLocal);
                }
                else
                {
                    // не загружался
                    m_objects.Add(obj);
                    prop.Internal_Values.Add(obj);
                }
            }
        }
コード例 #2
0
ファイル: UnitOfWork.cs プロジェクト: SanSay157/IT8
        /// <summary>
        /// Создание объекта
        /// </summary>
        /// <param name="sTypeName">Тип объекта</param>
        /// <returns>DomainObject</returns>
        public DomainObject Create(string sTypeName)
        {
            DomainObject obj = MapperRegistry.GetMapper(sTypeName).CreateNewObject(this);

            m_objects.Add(obj);
            return(obj);
        }
コード例 #3
0
ファイル: UnitOfWork.cs プロジェクト: SanSay157/IT8
 internal void loadObject(DomainObject obj)
 {
     if (obj.State != DomainObjectState.Ghost)
     {
         return;
     }
     if (!m_bLazyLoadEnabled)
     {
         throw new InvalidOperationException("Загрузка объектов отключена");
     }
     MapperRegistry.GetMapper(obj.ObjectType).LoadObject(this, obj);
     OnObjectLoaded(new ObjectLoadedEventArgs(obj));
 }
コード例 #4
0
ファイル: UnitOfWork.cs プロジェクト: SanSay157/IT8
        public DomainObject GetGhost(string sTypeName, Guid oid)
        {
            DomainObject obj = m_objects.Find(sTypeName, oid);

            if (obj != null)
            {
                // TODO: а что делать если obj.IsDeleted ??? Наверное исключение надо
                if (obj.IsDeleted)
                {
                    throw new InvalidOperationException("Запрошенный объект (" + obj + ") помечен как удаленный в текущей транзакции");
                }
                return(obj);
            }
            obj = MapperRegistry.GetMapper(sTypeName).CreateGhost(this, oid);
            m_objects.Add(obj);
            return(obj);
        }
コード例 #5
0
ファイル: UnitOfWork.cs プロジェクト: SanSay157/IT8
        /// <summary>
        /// Создание объекта
        /// </summary>
        /// <param name="sTypeName">Тип объекта</param>
        /// <param name="oid">Идентификатор объекта</param>
        /// <returns>DomainObject</returns>
        public DomainObject GetObject(string sTypeName, Guid oid)
        {
            DomainObject obj = m_objects.Find(sTypeName, oid);

            if (obj != null)
            {
                loadObject(obj);
                return(obj);
            }
            if (obj == null)
            {
                obj = MapperRegistry.GetMapper(sTypeName).LoadObject(this, oid);
            }
            m_objects.Add(obj);
            OnObjectLoaded(new ObjectLoadedEventArgs(obj));
            return(obj);
        }