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); } } }
/// <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); }
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)); }
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); }
/// <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); }