Beispiel #1
0
 public void ApplyResolution(ISqlDataStore datastore, ISyncSessionInfo syncSessionInfo)
 {
     foreach (var mergeResolution in MergeResolutionToApplies)
     {
         mergeResolution.ApplyResolution(datastore, syncSessionInfo);
     }
 }
Beispiel #2
0
        public void DisableAutoIncrement(ISqlDataStore dataStore)
        {
            if (!HasAutoIncrement)
            {
                return;
            }

            dataStore.ExecuteNonQuery(string.Format(CultureInfo.InvariantCulture, "SET IDENTITY_INSERT [{0}] ON;", EntityName));
        }
Beispiel #3
0
        public void ApplyRemoteResolution(ISqlDataStore datastore, ISyncSessionInfo syncSessionInfo)
        {
            if (RemoteMergeResolution == null)
            {
                return;
            }

            RemoteMergeResolution.ApplyResolution(datastore, syncSessionInfo);
        }
Beispiel #4
0
        public AppTestContext(ICompositionRoot root)
        {
            this.root                 = root;
            this.appContext           = root.CreateContext();
            this.configurationManager = appContext.Resolve <IConfigurationManager>();
            this.cs = configurationManager.GetValue("csSqlDataStore");
            var dsProvider = appContext.Resolve <IDataStoreProvider>();

            this.dataStore = dsProvider.GetDataStore <ISqlDataStore>(cs);
        }
Beispiel #5
0
        public void SetDatastore(ISqlDataStore value)
        {
            _datastore = value;
            var entityInfo = GetSyncableEntity();

            _entitySerialiazer = new EntityChangesetBuilder(entityInfo, _syncSession);

            if (entityInfo.IsDeleteTrackEnable)
            {
                _entityTombstoneSerialiazer = new EntityChangesetBuilder(entityInfo.EntityTombstoneInfo, _syncSession);
            }
        }
Beispiel #6
0
        public static EntityChangeset Create(ISqlDataStore dataStore, IEntityInfo syncEntity, ISyncSessionInfo syncSessionInfo)
        {
            var entityName = syncEntity.GetNameInStore();

            var result = new EntityChangeset(entityName)
            {
                _syncSession = syncSessionInfo
            };

            result.SetDatastore(dataStore);
            return(result);
        }
Beispiel #7
0
 public void ApplyDelete(ISqlDataStore datastore, string entityName, EntityChangesetBuilder entitySerialiazer)
 {
     try
     {
         using (var command = entitySerialiazer.ToDelete(datastore, entityName, this))
         {
             datastore.ExecuteNonQuery(command);
         }
     }
     catch (Exception e)
     {
         throw new Exception(string.Format("Erreur lors de la suppression {0}. Exception: {1}", this, e));
     }
 }
        public IDbCommand FindExisting(ISqlDataStore dataStore, EntityChange entityChange)
        {
            const string sqlCommandText = "SELECT * FROM [{0}] WHERE {1}";
            var          @params        = new List <IDataParameter>();

            var sqlFactory = dataStore.SqlFactory;

            var where = BuildWhereIdentity(entityChange, _entityInfo, sqlFactory, @params);

            var select = sqlFactory.CreateCommand();

            select.CommandText = string.Format(sqlCommandText, _entityInfo.GetNameInStore(), where);
            SetCommandParam(@params, select);
            return(select);
        }
        public void ApplyRemoteResolution(ISqlDataStore dataStore, ISyncSessionInfo syncSessionInfo)
        {
            if (Conflicts == null || Conflicts.Count == 0)
            {
                return;
            }

            foreach (var conflict in Conflicts)
            {
                conflict.ApplyRemotePreResolution(dataStore, syncSessionInfo);
            }

            foreach (var conflict in Conflicts)
            {
                conflict.ApplyRemoteResolution(dataStore, syncSessionInfo);
            }
        }
Beispiel #10
0
        public void ApplyRemoteResolution(ISqlDataStore dataStore, ISyncSessionInfo syncSession, ISyncStatProvider statProvider)
        {
            if (EntitiesConflict == null || EntitiesConflict.Count == 0)
            {
                return;
            }

            var progression = new LinearProgression(EntitiesConflict.Count);

            statProvider.SetNewState(SyncStates.ApplyRemoteResolution, progression);

            foreach (var entityConflict in EntitiesConflict)
            {
                entityConflict.ApplyRemoteResolution(dataStore, syncSession);
                progression.CurrentStepFinished();
            }
        }
Beispiel #11
0
        public void ApplyChanges(ISqlDataStore datastore, ISyncStatProvider statProvider, IConflictsManager conflictsManager)
        {
            if (EntityChangeset.Count == 0)
            {
                return;
            }

            var progression = new LinearProgression(EntityChangeset.Count * 3);

            statProvider.SetNewState(SyncStates.ApplyingRemoteChange, progression);

            var changeSets = new List <ChangeSet>();

            foreach (var entityChangeset in EntityChangeset)
            {
                entityChangeset.SetDatastore(datastore);
                var conflic = conflictsManager.CreateEntityConflict(entityChangeset, _syncSessionInfo);
                changeSets.Add(new ChangeSet(entityChangeset, conflic, conflictsManager));
            }

            // Update FK changes before delete
            foreach (var entityChange in changeSets)
            {
                entityChange.ApplyUpdate();
                progression.CurrentStepFinished();
            }

            // Delete FK before delete PK
            changeSets.Reverse();
            foreach (var entityChange in changeSets)
            {
                entityChange.ApplyDelete();
                progression.CurrentStepFinished();
            }

            // Insert PK before insert FK
            changeSets.Reverse();
            foreach (var entityChange in changeSets)
            {
                entityChange.ApplyInsert();
                entityChange.ApplyLastSync();
                entityChange.ResolveConflicts(datastore);
                progression.CurrentStepFinished();
            }
        }
Beispiel #12
0
 public void ApplyInsert(ISqlDataStore datastore, EntityChangesetBuilder entitySerialiazer)
 {
     try
     {
         DisableAutoIncrement(datastore);
         using (var command = entitySerialiazer.ToInsert(datastore, EntityName, this))
         {
             datastore.ExecuteNonQuery(command);
         }
     }
     catch (Exception e)
     {
         throw new Exception(string.Format("Erreur lors de l'insertion {0}. Exception: {1}", this, e));
     }
     finally
     {
         RestoreAutoIncrement(datastore);
     }
 }
Beispiel #13
0
        public void ApplyResolution(ISqlDataStore datastore, ISyncSessionInfo syncSessionInfo)
        {
            var entityInfo             = datastore.Entities[Entity.EntityName];
            var entityChangesetBuilder = new EntityChangesetBuilder(entityInfo, syncSessionInfo);

            switch (OperationType)
            {
            case OperationTypes.Insert:
                Entity.ApplyInsert(datastore, entityChangesetBuilder);
                break;

            case OperationTypes.Update:
                Entity.ApplyUpdate(datastore, entityChangesetBuilder);
                break;

            case OperationTypes.Delete:
                Entity.ApplyDelete(datastore, Entity.EntityName, entityChangesetBuilder);
                break;
            }
        }
Beispiel #14
0
        public void RestoreAutoIncrement(ISqlDataStore datastore)
        {
            if (!HasAutoIncrement)
            {
                return;
            }

            datastore.ExecuteNonQuery(string.Format(CultureInfo.InvariantCulture, "SET IDENTITY_INSERT [{0}] OFF;", EntityName));
            var primaryKey = Fields.FirstOrDefault(_ => _.IsPrimaryKey);

            if (primaryKey == null)
            {
                return;
            }

            var primaryKeyField = primaryKey.Name;
            var maxIdDbValue    = datastore.ExecuteScalar(string.Format("SELECT MAX({0}) FROM [{1}]", primaryKeyField, EntityName));
            var maxId           = maxIdDbValue == DBNull.Value ? 1 : (long)maxIdDbValue;

            datastore.ExecuteNonQuery(string.Format("ALTER TABLE [{0}] ALTER COLUMN {1} IDENTITY ({2}, 1);", EntityName, primaryKeyField, maxId + 1));
        }
Beispiel #15
0
        public void Init()
        {
            var datasource = TestContext.CurrentContext.Test.MethodName + ".sdf";

            Debug.WriteLine(string.Format("Database is available here:{0}", Path.Combine(TestContext.CurrentContext.WorkDirectory, datasource)));
            DataStore = SqlCeFactory.CreateStore(datasource);

            if (DataStore.StoreExists)
            {
                DataStore.DeleteStore();
            }
            DataStore.AddType <Book>();
            DataStore.AddType <BookVersion>();
            DataStore.CreateOrUpdateStore();
            DataStore.Cache  = new EntitiesCache();
            BookRepository   = new BookRepository(DataStore);
            DatastoreNoCache = SqlCeFactory.CreateStore(datasource);
            DatastoreNoCache.AddType <Book>();
            DatastoreNoCache.AddType <BookVersion>();
            NoCachedBookVersionRepository = new BookVersionRepository(DatastoreNoCache);
            BookVersionRepository         = new BookVersionRepository(DataStore);
        }
Beispiel #16
0
 public SqliteAccessStrategy(ISqlDataStore dataStore)
 {
     _datastore = dataStore;
 }
Beispiel #17
0
 public XpoDataStoreProxy(string connectionString)
 {
     dataStoreCore = (ISqlDataStore) XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.DatabaseAndSchema);
     dataLayerCore = new SimpleDataLayer(dataStoreCore);
 }
Beispiel #18
0
 public IDbAccessStrategy CreateDbAccessStrategy(ISqlDataStore sqlDataStore)
 {
     return(new SqlCeAccessStrategy(sqlDataStore));
 }
Beispiel #19
0
 public ISchemaChecker CreateSchemaChecker(ISqlDataStore sqlDataStore)
 {
     return(new SqlCeSchemaChecker(sqlDataStore));
 }
Beispiel #20
0
 protected SchemaChecker(ISqlDataStore sqlDataStore)
 {
     SqlDataStore = sqlDataStore;
 }
Beispiel #21
0
 public EntitiesChangeset(ISqlDataStore dataStore, ISyncSessionInfo syncSessionInfo)
 {
     _dataStore      = dataStore;
     EntityChangeset = new List <EntityChangeset>();
     SetSyncSession(syncSessionInfo);
 }
Beispiel #22
0
 public SqliteSchemaChecker(ISqlDataStore sqlDataStore)
     : base(sqlDataStore)
 {
 }
 public ClientEntitiesChangeset(ISqlDataStore dataStore, ISyncSessionInfo syncSessionInfo)
     : base(dataStore, syncSessionInfo)
 {
 }
Beispiel #24
0
 public SqlCeAccessStrategy(ISqlDataStore datastore)
 {
     _entityOrdinal = new Dictionary <string, Dictionary <string, int> >();
     _datastore     = datastore;
 }
Beispiel #25
0
 public StandardDbAccessStrategy(ISqlDataStore dataStore)
 {
     _datastore = dataStore;
 }