private void insert(ListContainer sc) { ISerializableObject sourceObject = sc.iso; ISerializableObject sinkObject = sinkSerializer.CreateISerializableObject(sourceObject.GetType(), sc.iso.Rowguid);//Hier werden die Relationen mitgefüllt. Eigentlich ist da nicht nötig->Methode ändern? Zeitersparnis? //Evtl. Problem, dass nicht alle Beziehungen aufgelöst werden können, weil noch nicht alle Objekte "rübersynchronisert" wurden. copyToSinkObject(sourceObject, sinkObject); if (LookupSynchronizationInformation.getImageClasses().Contains(sourceObject.GetType())) { try { MessageBox.Show("Insert Picture:" + sinkObject.Rowguid.ToString()); if (this.pictrans == null) { throw new TransferException("No TransferService is added"); } insertPicture(sinkObject); } catch (Exception ex) { MessageBox.Show("Picture SyncFailure: " + ex.Message); return; } } try { adjustAutoIncKeys(sinkObject); sinkSerializer.Connector.InsertPlain(sinkObject); SyncItem si = syncSerializer.CreateISerializableObject <SyncItem>(); si.SyncGuid = sourceObject.Rowguid; si.ClassID = sourceObject.GetType().Name; syncSerializer.Connector.Save(si); sinkObject = FetchObject(sinkSerializer, sinkObject.Rowguid, sinkObject.GetType());//Mit angepasstem AutoIncSChlüssel aus der DB holen sc.State = SyncStates_Enum.SynchronizedState; } catch (Exception e) { MessageBox.Show("Insert Failure: " + e.Message + " All dependent Insert will also Fail and notice You"); } }
private void analyzeObjectInsertOnly(ISerializableObject iso) { ISerializableObject source = iso; Guid syncGuid = source.Rowguid; SyncItem syncItem = FetchSyncItem(syncGuid); if (syncItem == null)//In der Synchronisationstabelle gibt es keinen korrepondierenden Eintrag { #if DEBUG logger.Debug(source.GetType().Name + ", guid=" + syncGuid + " is not synchronized and will be inserted"); #endif analyzedList.Add(new ListContainer(iso, SyncStates_Enum.InsertState)); } else { #if DEBUG logger.Debug(syncItem.ClassID + ", guid=" + syncGuid + " has not changed and will not be synchronized"); #endif analyzedList.Add(new ListContainer(iso, SyncStates_Enum.IgnoreState)); } //Hier CheckForeignKeyConstraintüberprüfung analog zu Daniel einbauen? }