void SynchronizeTypes(string connectionString, IEnumerable<XPObjectType> xpObjectTypes) { var sqlDataStoreProxy = new DataStoreProxy(connectionString); using (var simpleDataLayer = new SimpleDataLayer(sqlDataStoreProxy)) { using (var session = new Session(simpleDataLayer)) { var xpoObjectHacker = new XpoObjectHacker(); bool sync = false; int[] oid = { 0 }; sqlDataStoreProxy.DataStoreUpdateSchema += EnsureIsNotIdentity(xpoObjectHacker); sqlDataStoreProxy.DataStoreModifyData += (sender, args) => { var insertStatement = args.ModificationStatements.OfType<InsertStatement>().SingleOrDefault(statement => statement.TableName == typeof(XPObjectType).Name); if (insertStatement != null && !sync) { sync = true; xpoObjectHacker.CreateObjectTypeIndetifier(insertStatement, simpleDataLayer, oid[0]); var modificationResult = sqlDataStoreProxy.ModifyData(insertStatement); sync = false; args.ModificationResult = modificationResult; args.ModificationResult.Identities = new[] { new ParameterValue { Value = oid[0] } }; } }; foreach (var xpObjectType in xpObjectTypes) { oid[0] = xpObjectType.Oid; SynchronizeTypesCore(xpObjectType, session); } } } }
public SimpleDataLayer GetDataLayer(XPDictionary xpDictionary, MultiDataStore multiDataStore,Type type) { string connectionString = multiDataStore.DataStoreManager.GetConnectionString(type); var xpoDataStoreProxy = new DataStoreProxy(connectionString); xpoDataStoreProxy.DataStoreModifyData+=(o, eventArgs) => multiDataStore.ModifyData(eventArgs); xpoDataStoreProxy.DataStoreSelectData+=(sender1, dataEventArgs) => { if (multiDataStore.DataStoreManager.SimpleDataLayers.Count>1&&IsQueryingXPObjectType(dataEventArgs)) { createExcludeXPObjectTypeArgs(dataEventArgs.SelectStatements,xpDictionary); } multiDataStore.SelectData(dataEventArgs); }; xpoDataStoreProxy.DataStoreUpdateSchema +=(o1, schemaEventArgs) => multiDataStore.UpdateSchema(schemaEventArgs); return new SimpleDataLayer(xpDictionary, xpoDataStoreProxy); }
public SimpleDataLayer GetDataLayer(XPDictionary xpDictionary, MultiDataStore multiDataStore, Type type) { string connectionString = multiDataStore.DataStoreManager.GetConnectionString(type); var xpoDataStoreProxy = new DataStoreProxy(connectionString); xpoDataStoreProxy.DataStoreModifyData += (o, eventArgs) => multiDataStore.ModifyData(eventArgs); xpoDataStoreProxy.DataStoreSelectData += (sender1, dataEventArgs) => { if (multiDataStore.DataStoreManager.SimpleDataLayers.Count > 1 && IsQueryingXPObjectType(dataEventArgs)) { createExcludeXPObjectTypeArgs(dataEventArgs.SelectStatements, xpDictionary); } multiDataStore.SelectData(dataEventArgs); }; xpoDataStoreProxy.DataStoreUpdateSchema += (o1, schemaEventArgs) => multiDataStore.UpdateSchema(schemaEventArgs); return(new SimpleDataLayer(xpDictionary, xpoDataStoreProxy)); }
public DataStoreProvider(string connectionString) { _connectionString = connectionString; _storeProxy = new DataStoreProxy(connectionString); }
public DataStoreProvider(IDataStore dataStore) { _storeProxy = new DataStoreProxy(dataStore); var connectionProviderSql = dataStore as ConnectionProviderSql; if (connectionProviderSql!=null) _connectionString = connectionProviderSql.ConnectionString; }