private void CreateXPObjectSpaceProvider(string connectionString, CreateCustomObjectSpaceProviderEventArgs e)
        {
            HttpApplicationState  application       = (HttpContext.Current != null) ? HttpContext.Current.Application : null;
            IXpoDataStoreProvider dataStoreProvider = null;

            if (application != null && application["DataStoreProvider"] != null)
            {
                dataStoreProvider     = application["DataStoreProvider"] as IXpoDataStoreProvider;
                e.ObjectSpaceProvider = new XPObjectSpaceProvider(dataStoreProvider, true);
            }
            else
            {
                if (!String.IsNullOrEmpty(connectionString))
                {
                    connectionString  = XpoDefault.GetConnectionPoolString(connectionString);
                    dataStoreProvider = new ConnectionStringDataStoreProvider(connectionString, true);
                }
                else if (e.Connection != null)
                {
                    dataStoreProvider = new ConnectionDataStoreProvider(e.Connection);
                }
                if (application != null)
                {
                    application["DataStoreProvider"] = dataStoreProvider;
                }
                e.ObjectSpaceProvider = new XPObjectSpaceProvider(dataStoreProvider, true);
            }
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            string           connectionString;
            AutoCreateOption autoCreateOption = AutoCreateOption.SchemaAlreadyExists;

            if (HostingEnvironment.IsDevelopment())
            {
                connectionString = Configuration.GetConnectionString("Dev");
                autoCreateOption = AutoCreateOption.DatabaseAndSchema;
            }
            else
            {
                connectionString = Configuration.GetConnectionString("Prod");
                connectionString = XpoDefault.GetConnectionPoolString(connectionString);
            }
            IDataStore dataStore = XpoDefault.GetConnectionProvider(connectionString, autoCreateOption);

            services.AddSingleton(new WebApiDataStoreService(dataStore));

            // add XML Serializer formatters
            services.AddMvc()
            .AddXmlSerializerFormatters();
        }
Example #3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();


            // Configure XPO Data Store Service
            string           connectionString;
            AutoCreateOption autoCreateOption = AutoCreateOption.SchemaAlreadyExists;

            if (HostingEnvironment.IsDevelopment())
            {
                connectionString = Configuration.GetConnectionString("Dev");
                autoCreateOption = AutoCreateOption.DatabaseAndSchema;
            }
            else
            {
                connectionString = Configuration.GetConnectionString("Prod");
                connectionString = XpoDefault.GetConnectionPoolString(connectionString);
            }
            IDataStore             dataStore = XpoDefault.GetConnectionProvider(connectionString, autoCreateOption);
            WebApiDataStoreService service   = new WebApiDataStoreService(dataStore);

            services.AddSingleton(dataStore);
            services.AddSingleton(service);

            services.AddMvc().AddXmlSerializerFormatters();
            services.AddCors(options =>
                             options.AddPolicy("XPO", builder =>
                                               builder.WithOrigins("https://localhost:44317")
                                               .WithMethods("POST")
                                               .WithHeaders("Content-Type")));
        }
Example #4
0
        private IXpoDataStoreProvider GetDataStoreProvider(string connectionString, IDbConnection connection)
        {
            var application = HttpContext.Current != null ? HttpContext.Current.Application : null;
            IXpoDataStoreProvider dataStoreProvider = null;

            if (application != null && application["DataStoreProvider"] != null)
            {
                dataStoreProvider = application["DataStoreProvider"] as IXpoDataStoreProvider;
            }
            else
            {
                if (!string.IsNullOrEmpty(connectionString))
                {
                    connectionString  = XpoDefault.GetConnectionPoolString(connectionString);
                    dataStoreProvider = new ConnectionStringDataStoreProvider(connectionString, true);
                }
                else if (connection != null)
                {
                    dataStoreProvider = new ConnectionDataStoreProvider(connection);
                }
                if (application != null)
                {
                    application["DataStoreProvider"] = dataStoreProvider;
                }
            }
            return(dataStoreProvider);
        }
        private static IDataStore GetConnectionPoolProvider(string connectionName)
        {
            string connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;

            connectionString = XpoDefault.GetConnectionPoolString(connectionString);
            return(XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.SchemaAlreadyExists));
        }
 XpoDataStoreService(string connectionString, AutoCreateOption autoCreateOption, bool useDataStorePool)
 {
     if (useDataStorePool)
     {
         connectionString = XpoDefault.GetConnectionPoolString(connectionString);
     }
     DataStore = XpoDefault.GetConnectionProvider(connectionString, autoCreateOption);
 }
Example #7
0
        //public static T Execute<T>(string dataLayerName, Func<Session, T> work, bool transactional = true, bool commit = true)
        //{

        //}

        #endregion

        private static IDataLayer createDataLayer(string connectionString, string datalayerName)
        {
            if (String.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException("connectionString");
            }
            // set XpoDefault.Session to null to prevent accidental use of XPO default session
            XpoDefault.Session = null;
            //ReflectionClassInfo.SuppressSuspiciousMemberInheritanceCheck = true;
            // Needed to run in Medium Trust Security Context
            XpoDefault.UseFastAccessors    = false;
            XpoDefault.IdentityMapBehavior = IdentityMapBehavior.Strong;

            // autocreate option in connectionstring
            AutoCreateOption createOption      = Conversion.GetConfigOption <AutoCreateOption>(connectionString, "AutoCreateOption", AutoCreateOption.DatabaseAndSchema);
            bool             enableCachingNode = Conversion.GetConfigOption(connectionString, "EnableCachingNode", false);

            XPDictionary dataDictionary = new ReflectionDictionary();
            IDataStore   dataStore      = XpoDefault.GetConnectionProvider(XpoDefault.GetConnectionPoolString(connectionString), createOption);

            // Initialize the XPO dictionary
            dataDictionary.GetDataStoreSchema(GetDataTypes(datalayerName));

            // make sure everything exists in the db
            if (createOption == AutoCreateOption.DatabaseAndSchema)
            {
                using (SimpleDataLayer dataLayer = new SimpleDataLayer(dataStore))
                {
                    using (Session session = new Session(dataLayer))
                    {
                        // place code here to patch metadata
                        session.UpdateSchema();
                        session.CreateObjectTypeRecords();
                        XpoDefault.DataLayer = new ThreadSafeDataLayer(session.Dictionary, dataStore);
                    }
                }
            }
            IDataLayer result;

            if (enableCachingNode)
            {
                result = new ThreadSafeDataLayer(dataDictionary, new DataCacheNode(new DataCacheRoot(dataStore)));
            }
            else
            {
                result = new ThreadSafeDataLayer(dataDictionary, dataStore);
            }

            return(result);
        }
Example #8
0
        private static IDataLayer GetDataLayer()
        {
            //XpoDefault.Session = null;
            string conn = ConfigurationManager.ConnectionStrings["ETTPotocnik"].ConnectionString;

            conn = XpoDefault.GetConnectionPoolString(conn);
            XPDictionary dict  = new ReflectionDictionary();
            IDataStore   store = XpoDefault.GetConnectionProvider(conn, AutoCreateOption.SchemaAlreadyExists);

            dict.GetDataStoreSchema(System.Reflection.Assembly.GetExecutingAssembly());
            IDataLayer dl = new ThreadSafeDataLayer(dict, store);

            return(dl);
        }
Example #9
0
        public static ThreadSafeDataLayer CreatePooledDataLayer(string connectionString)
        {
            var dictionary = PrepareDictionary();

            using (var updateDataLayer = XpoDefault.GetDataLayer(connectionString, dictionary, AutoCreateOption.DatabaseAndSchema)) {
                updateDataLayer.UpdateSchema(false, dictionary.CollectClassInfos(entityTypes));
            }

            string pooledConnectionString = XpoDefault.GetConnectionPoolString(connectionString);
            var    dataStore = XpoDefault.GetConnectionProvider(pooledConnectionString, AutoCreateOption.SchemaAlreadyExists);
            var    dataLayer = new ThreadSafeDataLayer(dictionary, dataStore);;

            return(dataLayer);
        }
Example #10
0
    public static IDataLayer GetDataLayer(string connectionStringName)
    {
        ConnectionStringName = connectionStringName;
        XpoDefault.Session   = null;
        string conn = ConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString;

        conn = XpoDefault.GetConnectionPoolString(conn);
        XPDictionary dict  = new ReflectionDictionary();
        IDataStore   store = XpoDefault.GetConnectionProvider(conn, AutoCreateOption.DatabaseAndSchema);

        dict.GetDataStoreSchema(System.Reflection.Assembly.GetExecutingAssembly());
        IDataLayer dl = new ThreadSafeDataLayer(dict, store);

        return(dl);
    }
        public static IDataLayer CreateDataLayer(AutoCreateOption autoCreationOption, bool threadSafe)
        {
            var dictionary = new ReflectionDictionary();

            dictionary.NullableBehavior = NullableBehavior.ByUnderlyingType;
            dictionary.GetDataStoreSchema(persistentTypes);
            if (threadSafe)
            {
                var provider = XpoDefault.GetConnectionProvider(XpoDefault.GetConnectionPoolString(ConnectionString), autoCreationOption);
                return(new ThreadSafeDataLayer(dictionary, provider));
            }
            else
            {
                var provider = XpoDefault.GetConnectionProvider(ConnectionString, autoCreationOption);
                return(new SimpleDataLayer(dictionary, provider));
            }
        }
Example #12
0
        public static IDataLayer CreateDataLayer(AutoCreateOption autoCreationOption, bool threadSafe)
        {
            XpoTypesInfoHelper.GetXpoTypeInfoSource();
            XafTypesInfo.Instance.RegisterEntity(typeof(Employee));
            XafTypesInfo.Instance.RegisterEntity(typeof(PermissionPolicyUser));
            XafTypesInfo.Instance.RegisterEntity(typeof(PermissionPolicyRole));

            foreach (var item in persistentTypes)
            {
                XafTypesInfo.Instance.RegisterEntity(item);
            }

            if (threadSafe)
            {
                var provider = XpoDefault.GetConnectionProvider(XpoDefault.GetConnectionPoolString(ConnectionString), autoCreationOption);
                return(new ThreadSafeDataLayer(XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary, provider));
            }
            else
            {
                var provider = XpoDefault.GetConnectionProvider(ConnectionString, autoCreationOption);
                return(new SimpleDataLayer(XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary, provider));
            }
        }
Example #13
0
        private static IDataStore CreateDataStore()
        {
            var handler = CustomCreateDataStore;

            if (handler != null)
            {
                CustomCreateDataStoreEventArgs args = new CustomCreateDataStoreEventArgs();

                handler(null, args);
                if (args.DataStore != null)
                {
                    return(args.DataStore);
                }
            }

            string connectionString = GetConnectionString();

            if (UseDataStorePool)
            {
                connectionString = XpoDefault.GetConnectionPoolString(connectionString);
            }

            return(XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.SchemaAlreadyExists));
        }