public SharedObjectRepository(DomainObjectInquiry objectInquiry, DomainObjectFactory objectFactory) { m_sharedObjRepository = new ObjectRepository(SessionIdentifier.SHARED_SESSION, objectInquiry); m_objectFactory = objectFactory; }
//public DomainObject GetObject(SessionIdentifier sessionId, ObjectIdentifier objectId) //{ // //return m_document[sessionId].GetObject(objectId); //} public void SaveRepositoryChanges(ObjectRepository objRepository) { lock (m_sharedObjRepositoryLock) { foreach (DomainObject obj in objRepository.NewObject) { DomainObject sharedObj = CloneObject(obj, SessionIdentifier.SHARED_SESSION); m_sharedObjRepository.Add(sharedObj); } foreach (DomainObject obj in objRepository.PropertyModifiedObject) { DomainObject sharedObj = CloneObject(obj, SessionIdentifier.SHARED_SESSION); m_sharedObjRepository.ChangeTo(sharedObj); } } }
private void SateToDB(SessionIdentifier session, ObjectRepository objRepository) { foreach (IGrouping<string, DomainObject> newObjGroup in objRepository.NewObjectGroup) { string objCode = newObjGroup.Key; DomainObjectBroker objBroker = GetObjectBroker(objCode); DbCommonCommand saveCommand = objBroker.NewItemCommand; SaveObject(session, newObjGroup, saveCommand); } foreach (IGrouping<string, DomainObject> saveObjGroup in objRepository.OldChangedObjects) { string objCode = saveObjGroup.Key; DomainObjectBroker objBroker = GetObjectBroker(objCode); DbCommonCommand saveCommand = objBroker.SaveItemCommand; SaveObject(session, saveObjGroup, saveCommand); } foreach (IGrouping<string, DomainObject> deleteObjGroup in objRepository.DeletedObjects) { string objCode = deleteObjGroup.Key; DomainObjectBroker objBroker = GetObjectBroker(objCode); DbCommonCommand deleteCommand = objBroker.DeleteItemsCommand; deleteCommand[DomainObjectBroker.ObjectIdField].Value = deleteObjGroup; deleteCommand.ExecuteNonQuery(session, true); } foreach (KeyValuePair<DomainLink, IEnumerable<DomainLinkNode>> link in objRepository.NewLinks) { DomainLinkBroker linkBroker = GetLinkBroker(link.Key.Key); DbCommonCommand dbCommand = linkBroker.NewItemCommand; SaveLink(session, link, dbCommand); } foreach (KeyValuePair<DomainLink, IEnumerable<DomainLinkNode>> link in objRepository.DeletedLinks) { DomainLinkBroker linkBroker = GetLinkBroker(link.Key.Key); DbCommonCommand dbCommand = linkBroker.DeleteItemCommand; SaveLink(session, link, dbCommand); } m_connection.Commit(session); }
internal Document(SessionIdentifier sid, DomainObjectInquiry inquiry) { Session = sid; m_objRepository = new ObjectRepository(Session, inquiry); }
public void SaveRepository(SessionIdentifier session, ObjectRepository objRepository) { SateToDB(session, objRepository); // Скопировать данные в глобальный репозиторий SharedRepository.SaveRepositoryChanges(objRepository); // DocumentManager.Instance. // Сбросить состояния объектов objRepository.ResetObjectState(); // Сбросить состояния ссылок objRepository.ResetLinkState(); //m_documentManager.SaveDocument(this); //// Записать в глобальный кеш новые объект //foreach (ObjectIdentifier objectId in NewObject) //{ // EntityObject obj = objectStorage[objectId]; //} //// очистить коллекции созданных объектов //NewObject.Clear(); //// Список id объектов уже перезаписанных в кеше //List<ObjectIdentifier> unlockList = new List<ObjectIdentifier>(); //// добавить измененный объект (свойства) в список для снятия блокировки //foreach (ObjectIdentifier oid in ChangedObjectProperty) //{ // unlockList.Add(oid); // EntityObject obj = objectStorage[oid]; //} //ChangedObjectProperty.Clear(); //// добавить измененный объект (свойства) в список для снятия блокировки //foreach (ObjectIdentifier oid in ChangedObjectLink) //{ // if (!unlockList.Contains(oid)) // { // unlockList.Add(oid); // EntityObject obj = objectStorage[oid]; // } //} //ChangedObjectLink.Clear(); //// очистить из хранилища удаленные объекты //foreach (List<ObjectIdentifier> list in m_removeObjectList.Values) //{ // foreach (ObjectIdentifier oid in list) // { // objectStorage.Remove(oid); // } //} //m_removeObjectList.Clear(); }