Exemplo n.º 1
0
        /// <summary>
        /// Expands the check.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="metadata">The metadata.</param>
        /// <returns>
        /// A sequence of check elements.
        /// </returns>
        private static IEnumerable <XElement> ExpandCheck(XElement element, IDbMetadata metadata)
        {
            var entityName = element.FindAncestorElementAttribute("Entity", "Name");

            if (element.Attribute("Match") == null || entityName == null)
            {
                yield return(element);
            }
            else
            {
                Regex match = new Regex(element.Attribute("Match").Value, RegexOptions.IgnoreCase);

                var matchedTables = metadata
                                    .AllColumns(entityName)
                                    .Where(t => match.IsMatch(t));

                foreach (var column in matchedTables)
                {
                    var expandedElement = new XElement(element);
                    expandedElement.SetAttributeValue("Field", column);

                    element.Parent.Add(expandedElement);

                    RaiseExpansionEvent(expandedElement, match.ToString(), column);

                    yield return(expandedElement);
                }
            }
        }
        public void CreateOperations()
        {
            IDbProvider   dbProvider     = mocks.StrictMock <IDbProvider>();
            IDbConnection mockConnection = mocks.StrictMock <IDbConnection>();

            Expect.Call(dbProvider.CreateConnection()).Return(mockConnection).Repeat.Once();

            IDbCommand mockCommand = (IDbCommand)mocks.CreateMock(typeof(IDbCommand));

            Expect.Call(dbProvider.CreateCommand()).Return(mockCommand).Repeat.Once();

            IDbDataParameter mockParameter = (IDbDataParameter)mocks.CreateMock(typeof(IDbDataParameter));

            Expect.Call(dbProvider.CreateParameter()).Return(mockParameter).Repeat.Once();

            IDbDataAdapter mockDataAdapter = (IDbDataAdapter)mocks.CreateMock(typeof(IDbDataAdapter));

            Expect.Call(dbProvider.CreateDataAdapter()).Return(mockDataAdapter).Repeat.Once();

            DbCommandBuilder mockDbCommandBuilder = (DbCommandBuilder)mocks.CreateMock(typeof(DbCommandBuilder));

            Expect.Call(dbProvider.CreateCommandBuilder()).Return(mockDbCommandBuilder).Repeat.Once();

            Expect.Call(dbProvider.CreateParameterName("p1")).Return("@p1").Repeat.Once();
            Expect.Call(dbProvider.CreateParameterNameForCollection("c1")).Return("cc1");

            IDbMetadata mockDbMetaData = (IDbMetadata)mocks.CreateMock(typeof(IDbMetadata));

            Expect.Call(dbProvider.DbMetadata).Return(mockDbMetaData);

            Exception e = new Exception("foo");

            Expect.Call(dbProvider.ExtractError(e)).Return("badsql").Repeat.Once();
            DbException dbException = (DbException)mocks.CreateMock(typeof(DbException));


            MultiDelegatingDbProvider multiDbProvider = new MultiDelegatingDbProvider();
            IDictionary targetDbProviders             = new Hashtable();

            targetDbProviders.Add("db1", dbProvider);
            multiDbProvider.DefaultDbProvider = dbProvider;
            multiDbProvider.TargetDbProviders = targetDbProviders;
            multiDbProvider.AfterPropertiesSet();


            mocks.ReplayAll();

            Assert.IsNotNull(multiDbProvider.CreateConnection());
            Assert.IsNotNull(multiDbProvider.CreateCommand());
            Assert.IsNotNull(multiDbProvider.CreateParameter());
            Assert.IsNotNull(multiDbProvider.CreateDataAdapter());
            Assert.IsNotNull(multiDbProvider.CreateCommandBuilder() as DbCommandBuilder);
            Assert.AreEqual("@p1", multiDbProvider.CreateParameterName("p1"));
            Assert.AreEqual("cc1", multiDbProvider.CreateParameterNameForCollection("c1"));
            Assert.IsNotNull(multiDbProvider.DbMetadata);
            Assert.AreEqual("badsql", multiDbProvider.ExtractError(e));
            Assert.IsTrue(multiDbProvider.IsDataAccessException(dbException));
            Assert.IsFalse(multiDbProvider.IsDataAccessException(e));
            mocks.VerifyAll();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Expands the entities.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="metadata">The metadata.</param>
        /// <returns>
        /// A sequence of expanded entities.
        /// </returns>
        private static IEnumerable <XElement> ExpandEntity(XElement element, IDbMetadata metadata)
        {
            if (element.Attribute("Match") == null)
            {
                yield return(element);
            }
            else
            {
                Regex match = new Regex(element.Attribute("Match").Value, RegexOptions.IgnoreCase);

                var matchedTables = metadata
                                    .AllTables()
                                    .Where(t => match.IsMatch(t));

                foreach (var table in matchedTables)
                {
                    var expandedElement = new XElement(element);
                    expandedElement.SetAttributeValue("Name", table);

                    element.Parent.Add(expandedElement);

                    RaiseExpansionEvent(expandedElement, match.ToString(), table);

                    yield return(expandedElement);
                }
            }
        }
Exemplo n.º 4
0
        public CheckScriptParserFacts()
        {
            this.metadata = Substitute.For <IDbMetadata>();

            this.metadata.AllTables().Returns(
                new string[] { "dw.TableA", "dw.TableB", "dw.TableC", "dbo.TableC" });

            this.document = XDocument.Parse(Xml, LoadOptions.SetLineInfo);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DbProvider"/> class.
 /// </summary>
 /// <param name="dbMetadata">The db metadata.</param>
 public DbProvider(IDbMetadata dbMetadata)
 {
     this.dbMetadata = dbMetadata;
     newCommand = DynamicConstructor.Create(dbMetadata.CommandType.GetConstructor(Type.EmptyTypes));
     newConnection = DynamicConstructor.Create(dbMetadata.ConnectionType.GetConstructor(Type.EmptyTypes));
     newCommandBuilder = DynamicConstructor.Create(dbMetadata.CommandBuilderType.GetConstructor(Type.EmptyTypes));
     newDataAdapter = DynamicConstructor.Create(dbMetadata.DataAdapterType.GetConstructor(Type.EmptyTypes));
     newParameter = DynamicConstructor.Create(dbMetadata.ParameterType.GetConstructor(Type.EmptyTypes));
 }
Exemplo n.º 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DbProvider"/> class.
 /// </summary>
 /// <param name="dbMetadata">The db metadata.</param>
 public DbProvider(IDbMetadata dbMetadata)
 {
     this.dbMetadata   = dbMetadata;
     newCommand        = DynamicConstructor.Create(dbMetadata.CommandType.GetConstructor(Type.EmptyTypes));
     newConnection     = DynamicConstructor.Create(dbMetadata.ConnectionType.GetConstructor(Type.EmptyTypes));
     newCommandBuilder = DynamicConstructor.Create(dbMetadata.CommandBuilderType.GetConstructor(Type.EmptyTypes));
     newDataAdapter    = DynamicConstructor.Create(dbMetadata.DataAdapterType.GetConstructor(Type.EmptyTypes));
     newParameter      = DynamicConstructor.Create(dbMetadata.ParameterType.GetConstructor(Type.EmptyTypes));
 }
Exemplo n.º 7
0
        public void CreateOperations()
        {
            IDbProvider   dbProvider     = A.Fake <IDbProvider>();
            IDbConnection mockConnection = A.Fake <IDbConnection>();

            A.CallTo(() => dbProvider.CreateConnection()).Returns(mockConnection).Once();

            IDbCommand mockCommand = A.Fake <IDbCommand>();

            A.CallTo(() => dbProvider.CreateCommand()).Returns(mockCommand).Once();

            IDbDataParameter mockParameter = A.Fake <IDbDataParameter>();

            A.CallTo(() => dbProvider.CreateParameter()).Returns(mockParameter).Once();

            IDbDataAdapter mockDataAdapter = A.Fake <IDbDataAdapter>();

            A.CallTo(() => dbProvider.CreateDataAdapter()).Returns(mockDataAdapter).Once();

            DbCommandBuilder mockDbCommandBuilder = A.Fake <DbCommandBuilder>();

            A.CallTo(() => dbProvider.CreateCommandBuilder()).Returns(mockDbCommandBuilder).Once();

            A.CallTo(() => dbProvider.CreateParameterName("p1")).Returns("@p1").Once();
            A.CallTo(() => dbProvider.CreateParameterNameForCollection("c1")).Returns("cc1");

            IDbMetadata mockDbMetaData = A.Fake <IDbMetadata>();

            A.CallTo(() => dbProvider.DbMetadata).Returns(mockDbMetaData);

            Exception e = new Exception("foo");

            A.CallTo(() => dbProvider.ExtractError(e)).Returns("badsql").Once();
            DbException dbException = A.Fake <DbException>();


            MultiDelegatingDbProvider multiDbProvider = new MultiDelegatingDbProvider();
            IDictionary targetDbProviders             = new Hashtable();

            targetDbProviders.Add("db1", dbProvider);
            multiDbProvider.DefaultDbProvider = dbProvider;
            multiDbProvider.TargetDbProviders = targetDbProviders;
            multiDbProvider.AfterPropertiesSet();

            Assert.IsNotNull(multiDbProvider.CreateConnection());
            Assert.IsNotNull(multiDbProvider.CreateCommand());
            Assert.IsNotNull(multiDbProvider.CreateParameter());
            Assert.IsNotNull(multiDbProvider.CreateDataAdapter());
            Assert.IsNotNull(multiDbProvider.CreateCommandBuilder() as DbCommandBuilder);
            Assert.AreEqual("@p1", multiDbProvider.CreateParameterName("p1"));
            Assert.AreEqual("cc1", multiDbProvider.CreateParameterNameForCollection("c1"));
            Assert.IsNotNull(multiDbProvider.DbMetadata);
            Assert.AreEqual("badsql", multiDbProvider.ExtractError(e));
            Assert.IsTrue(multiDbProvider.IsDataAccessException(dbException));
            Assert.IsFalse(multiDbProvider.IsDataAccessException(e));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DbProvider"/> class.
        /// </summary>
        /// <param name="dbMetadata">The db metadata.</param>
        public DbProvider(IDbMetadata dbMetadata)
        {
            this.dbMetadata = dbMetadata;
            newCommand = DynamicConstructor.Create(dbMetadata.CommandType.GetConstructor(Type.EmptyTypes));
            
            // Oracle needs custom bind by name property set to true as it's false by default
            var bindByNameProperty = dbMetadata.CommandType.GetProperty("BindByName");
            if (bindByNameProperty != null && bindByNameProperty.CanWrite)
            {
                commandBindByName = DynamicProperty.Create(bindByNameProperty);
            }

            newConnection = DynamicConstructor.Create(dbMetadata.ConnectionType.GetConstructor(Type.EmptyTypes));
            newCommandBuilder = DynamicConstructor.Create(dbMetadata.CommandBuilderType.GetConstructor(Type.EmptyTypes));
            newDataAdapter = DynamicConstructor.Create(dbMetadata.DataAdapterType.GetConstructor(Type.EmptyTypes));
            newParameter = DynamicConstructor.Create(dbMetadata.ParameterType.GetConstructor(Type.EmptyTypes));
        }
Exemplo n.º 9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DbProvider"/> class.
        /// </summary>
        /// <param name="dbMetadata">The db metadata.</param>
        public DbProvider(IDbMetadata dbMetadata)
        {
            this.dbMetadata = dbMetadata;
            newCommand      = DynamicConstructor.Create(dbMetadata.CommandType.GetConstructor(Type.EmptyTypes));

            // Oracle needs custom bind by name property set to true as it's false by default
            var bindByNameProperty = dbMetadata.CommandType.GetProperty("BindByName");

            if (bindByNameProperty != null && bindByNameProperty.CanWrite)
            {
                commandBindByName = DynamicProperty.Create(bindByNameProperty);
            }

            newConnection     = DynamicConstructor.Create(dbMetadata.ConnectionType.GetConstructor(Type.EmptyTypes));
            newCommandBuilder = DynamicConstructor.Create(dbMetadata.CommandBuilderType.GetConstructor(Type.EmptyTypes));
            newDataAdapter    = DynamicConstructor.Create(dbMetadata.DataAdapterType.GetConstructor(Type.EmptyTypes));
            newParameter      = DynamicConstructor.Create(dbMetadata.ParameterType.GetConstructor(Type.EmptyTypes));
        }
Exemplo n.º 10
0
	    public TestDbProvider()
	    {
            IDbProvider provider = DbProviderFactory.GetDbProvider("SqlServer-1.1");
            dbMetadata = provider.DbMetadata;

	    }
Exemplo n.º 11
0
        public TestDbProvider()
        {
            IDbProvider provider = DbProviderFactory.GetDbProvider("SqlServer-1.1");

            dbMetadata = provider.DbMetadata;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SqlFireDbProvider"/> class.
 /// </summary>
 /// <param name="dbMetadata">The db metadata.</param>
 public SqlFireDbProvider(IDbMetadata dbMetadata)
 {
     _dbMetadata = dbMetadata;
 }
Exemplo n.º 13
0
        public TestDbProvider()
        {
            IDbProvider provider = DbProviderFactory.GetDbProvider("System.Data.SqlClient");

            dbMetadata = provider.DbMetadata;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SqlFireDbProvider"/> class.
 /// </summary>
 /// <param name="dbMetadata">The db metadata.</param>
 public SqlFireDbProvider(IDbMetadata dbMetadata)
 {
     _dbMetadata = dbMetadata;
 }