public void EffortConnectionStringBuilder_InstanceId()
        {
            var writer = new EffortConnectionStringBuilder();
            writer.InstanceId = "InstanceId";

            var reader = new EffortConnectionStringBuilder(writer.ConnectionString);

            Assert.AreEqual("InstanceId", reader.InstanceId);
        }
        public void EffortConnectionStringBuilder_IsTransient()
        {
            var writer = new EffortConnectionStringBuilder();
            writer.IsTransient = true;

            var reader = new EffortConnectionStringBuilder(writer.ConnectionString);

            Assert.IsTrue(reader.IsTransient);
        }
        public void EffortConnectionStringBuilder_DataLoaderArgument()
        {
            var writer = new EffortConnectionStringBuilder();
            writer.DataLoaderArgument = "LoaderArgument";

            var reader = new EffortConnectionStringBuilder(writer.ConnectionString);

            Assert.AreEqual("LoaderArgument", reader.DataLoaderArgument);
        }
        public void EffortConnectionStringBuilder_DataLoaderType()
        {
            var writer = new EffortConnectionStringBuilder();
            writer.DataLoaderType = typeof(Effort.DataLoaders.EmptyDataLoader);

            var reader = new EffortConnectionStringBuilder(writer.ConnectionString);

            Assert.AreEqual(typeof(Effort.DataLoaders.EmptyDataLoader), reader.DataLoaderType);
        }
        public void CsvDataProvider()
        {
            string path = "C:\\";
            DbConnection connection = DbConnectionFactory.CreateTransient(new CsvDataLoader(path));

            EffortConnectionStringBuilder csb = new EffortConnectionStringBuilder(connection.ConnectionString);

            csb.DataLoaderType.Should().Be<CsvDataLoader>();
            csb.DataLoaderArgument.Should().Be(path);
        }
예제 #6
0
        /// <summary>
        ///     Deletes all store objects specified in the store item collection from the
        ///     database and the database itself.
        /// </summary>
        /// <param name="connection">
        ///     Connection to an existing database that needs to be deleted.
        /// </param>
        /// <param name="commandTimeout">
        ///     Execution timeout for any commands needed to delete the database.
        /// </param>
        /// <param name="storeItemCollection">
        ///     The structure of the database to be deleted.
        /// </param>
        protected override void DbDeleteDatabase(
            DbConnection connection,
            int?commandTimeout,
            StoreItemCollection storeItemCollection)
        {
            EffortConnectionStringBuilder connectionString =
                new EffortConnectionStringBuilder(connection.ConnectionString);

            DbContainerStore.RemoveDbContainer(connectionString.InstanceId);
        }
        public void EffortConnectionStringBuilder_Normalize()
        {
            var builder = new EffortConnectionStringBuilder();
            builder.IsTransient = true;

            builder.Normalize();

            Assert.IsFalse(builder.IsTransient);
            Guid value;
            Assert.IsTrue(Guid.TryParse(builder.InstanceId, out value));
        }
        public void transient_EffortConnection_should_normalize_connectionstring()
        {
            EffortConnection conn = new EffortConnection();
            conn.ConnectionString = "IsTransient=True";

            var builder = new EffortConnectionStringBuilder(conn.ConnectionString);

            // The IsTransient flag should be removed
            builder.IsTransient.Should().BeFalse();
            Guid value;
            // The InstanceId should be set as a guid
            Guid.TryParse(builder.InstanceId, out value).Should().BeTrue();
        }
예제 #9
0
        /// <summary>
        ///     Opens a database connection with the settings specified by the
        ///     <see cref="P:System.Data.Common.DbConnection.ConnectionString" />.
        /// </summary>
        public override void Open()
        {
            EffortConnectionStringBuilder connectionString =
                new EffortConnectionStringBuilder(this.ConnectionString);

            string instanceId = connectionString.InstanceId;

            if (this.lastContainerId == instanceId)
            {
                // The id was not changed, so the appropriate container is associated
                this.ChangeConnectionState(ConnectionState.Open);
                return;
            }

            this.container =
                DbContainerStore.GetDbContainer(instanceId, this.CreateDbContainer);

            this.containerConfiguration = new DbContainerManagerWrapper(this.container);

            this.lastContainerId = instanceId;
            this.ChangeConnectionState(ConnectionState.Open);
        }
예제 #10
0
        private DbContainer CreateDbContainer()
        {
            EffortConnectionStringBuilder connectionString =
                new EffortConnectionStringBuilder(this.ConnectionString);

            IDataLoader           dataLoader = null;
            DbContainerParameters parameters = new DbContainerParameters();
            Type dataLoaderType = connectionString.DataLoaderType;

            if (dataLoaderType != null)
            {
                //// TODO: check parameterless constructor

                dataLoader          = Activator.CreateInstance(dataLoaderType) as IDataLoader;
                dataLoader.Argument = connectionString.DataLoaderArgument;

                parameters.DataLoader = dataLoader;
            }

            parameters.IsTransient = this.isPrimaryTransient;

            return(new DbContainer(parameters));
        }
예제 #11
0
        private DbContainer CreateDbContainer()
        {
            EffortConnectionStringBuilder connectionString =
                new EffortConnectionStringBuilder(this.ConnectionString);

            IDataLoader dataLoader = null;
            DbContainerParameters parameters = new DbContainerParameters();
            Type dataLoaderType = connectionString.DataLoaderType;

            if (dataLoaderType != null)
            {
                //// TODO: check parameterless constructor

                dataLoader = Activator.CreateInstance(dataLoaderType) as IDataLoader;
                dataLoader.Argument = connectionString.DataLoaderArgument;

                parameters.DataLoader = dataLoader;
            }

            parameters.IsTransient = this.isPrimaryTransient;

            return new DbContainer(parameters);
        }
예제 #12
0
        internal virtual void UnregisterContainer()
        {
            var builder = new EffortConnectionStringBuilder(this.ConnectionString);

            DbContainerStore.RemoveDbContainer(builder.InstanceId);
        }
예제 #13
0
        /// <summary>
        ///     Opens a database connection with the settings specified by the 
        ///     <see cref="P:System.Data.Common.DbConnection.ConnectionString" />.
        /// </summary>
        public override void Open()
        {
            EffortConnectionStringBuilder connectionString =
                new EffortConnectionStringBuilder(this.ConnectionString);

            string instanceId = connectionString.InstanceId;

            if (this.lastContainerId == instanceId)
            {
                // The id was not changed, so the appropriate container is associated
                this.ChangeConnectionState(ConnectionState.Open);
                return;
            }

            this.container =
                DbContainerStore.GetDbContainer(instanceId, this.CreateDbContainer);

            this.containerConfiguration = new DbContainerManagerWrapper(this.container);

            this.lastContainerId = instanceId;
            this.ChangeConnectionState(ConnectionState.Open);
        }
        /// <summary>
        ///     Creates a new EntityConnection instance that wraps an EffortConnection object
        ///     with the specified connection string.
        /// </summary>
        /// <param name="entityConnectionString">
        ///     The entity connection string that references the metadata and identifies the 
        ///     persistent database.
        /// </param>
        /// <param name="effortConnectionString">
        ///     The effort connection string that is passed to the EffortConnection object.
        /// </param>
        /// <param name="persistent">
        ///     if set to <c>true</c> the ObjectContext uses a persistent database, otherwise 
        ///     transient.
        /// </param>
        /// <returns>
        ///     The EntityConnection object.
        /// </returns>
        public static EntityConnection Create(
            string entityConnectionString,
            string effortConnectionString,
            bool persistent)
        {
            MetadataWorkspace metadata =
                GetEffortCompatibleMetadataWorkspace(ref entityConnectionString);

            EffortConnectionStringBuilder ecsb =
                new EffortConnectionStringBuilder(effortConnectionString);

            if (persistent)
            {
                ecsb.InstanceId = entityConnectionString;
            }
            else
            {
                ecsb.InstanceId = Guid.NewGuid().ToString();
            }

            EffortConnection connection =
                new EffortConnection() { ConnectionString = ecsb.ConnectionString };

            if (!persistent)
            {
                connection.MarkAsPrimaryTransient();
            }

            return CreateEntityConnection(metadata, connection);
        }
예제 #15
0
        internal virtual void UnregisterContainer()
        {
            var builder = new EffortConnectionStringBuilder(this.ConnectionString);

            DbContainerStore.RemoveDbContainer(builder.InstanceId);
        }
예제 #16
0
        /// <summary>
        ///     Creates an EffortConnection object with a connection string that represents the 
        ///     specified parameter values.
        /// </summary>
        /// <param name="instanceId"> The instance id. </param>
        /// <param name="dataLoader"> The data loader. </param>
        /// <returns> The EffortConnection object. </returns>
        private static EffortConnection Create(string instanceId, IDataLoader dataLoader)
        {
            EffortProviderConfiguration.VerifyProvider();

            EffortConnectionStringBuilder connectionString = 
                new EffortConnectionStringBuilder();

            connectionString.InstanceId = instanceId;

            if (dataLoader != null)
            {
                connectionString.DataLoaderType = dataLoader.GetType();
                connectionString.DataLoaderArgument = dataLoader.Argument;
            }

            EffortConnection connection = new EffortConnection();
            connection.ConnectionString = connectionString.ConnectionString;

            return connection;
        }