コード例 #1
0
ファイル: TypeSynchronizer.cs プロジェクト: noxe/eXpand
 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);
             }
         }
     }
 }
コード例 #2
0
ファイル: MultiDataStore.cs プロジェクト: krazana/eXpand
        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);

        }
コード例 #3
0
        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));
        }
コード例 #4
0
ファイル: DataStoreProvider.cs プロジェクト: noxe/eXpand
 public DataStoreProvider(string connectionString) {
     _connectionString = connectionString;
     _storeProxy = new DataStoreProxy(connectionString);
 }
コード例 #5
0
ファイル: DataStoreProvider.cs プロジェクト: noxe/eXpand
 public DataStoreProvider(IDataStore dataStore) {
     _storeProxy = new DataStoreProxy(dataStore);
     var connectionProviderSql = dataStore as ConnectionProviderSql;
     if (connectionProviderSql!=null)
         _connectionString = connectionProviderSql.ConnectionString;
 }