Exemplo n.º 1
0
        public void Constructor2a()
        {
            MssqlLoader m = new MssqlLoader("CONNECTION STRING", "LOADER NAME", "DB NAME");

            //ConnectionString is not exposed, so cannot check it
            Assert.AreEqual("LOADER NAME", m.Name);
        }
    //
    //Instance functionality
    //

    /// <summary>
    /// Given connection name (that corresponds to what's found in web.config), return an appropriate ILoader concrete object
    /// to handle that database connection.
    /// </summary>
    /// <param name="connName">Name of connection that appears in web.config</param>
    /// <returns>Concrete ILoader object capable to handling the database connection</returns>
    public ILoader GetMetaLoader(string connName)
    {
        ILoader ret = null;

        if (!String.IsNullOrEmpty(connName) && ConfigurationManager.ConnectionStrings[connName] != null)
        {
            ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings[connName];
            if (cs.ProviderName.ToLower().Equals("system.data.sqlclient"))
            {
                string databaseName = cs.Name; //Database name defaults to connection string name

                //Try to determine actual database name by parsing connection string
                string[] connStringKeyValuePairs = cs.ConnectionString.Split(';');
                foreach (string pair in connStringKeyValuePairs)
                {
                    string[] splitPair        = pair.Split('=');
                    string[] databaseKeyNames = new string[] { "attachdbfilename", "database", "initial catalog" };
                    if (databaseKeyNames.Contains(splitPair[0].Trim().ToLower()))
                    {
                        databaseName = splitPair[1].Trim();
                        break;
                    }
                }

                ret = new MssqlLoader(cs.ConnectionString, cs.Name, databaseName);
            }
            //TODO: add more providers
        }
        return(ret);
    }
Exemplo n.º 3
0
        public void QueryExecuted_NoSubscribers()
        {
            bool        eventOccurred = false;
            MssqlLoader m             = new MssqlLoader(TEST_CONN_STRING, "ConnTest", "DbTest");
            //Do not subscribe to the m.QueryOccurred event
            Database d = m.Load(); //Triggers QueryExecuted event

            Assert.IsFalse(eventOccurred, "QueryExecuted should not have occurred");
        }
Exemplo n.º 4
0
        public void QueryExecuted()
        {
            bool        eventOccurred = false;
            MssqlLoader m             = new MssqlLoader(TEST_CONN_STRING, "ConnTest", "DbTest");

            m.QueryExecuted += (object sender, QueryExecutedEventArgs e) =>
            {
                eventOccurred = true;
                Assert.IsNotNull(sender);
                Assert.IsNotNull(e);
            };
            Database d = m.Load();

            Assert.IsTrue(eventOccurred, "QueryExecuted should have occurred");
        }
Exemplo n.º 5
0
        public void Load_Table4Columns0Rows_ViewOfTable4Columns0Rows()
        {
            //Preparation
            Assert.AreEqual(0, RunSQLCMD(DROP_ALL_TABLES_VIEWS_SCRIPT));
            Assert.AreEqual(0, RunSQLCMD(CREATE_Table4Columns0Rows_TABLE_SCRIPT));
            Assert.AreEqual(0, RunSQLCMD(CREATE_ViewOfTable4Columns0Rows_VIEW_SCRIPT));

            //Load what was prepared
            MssqlLoader m = new MssqlLoader(TEST_CONN_STRING, "ConnTest", "DbTest");
            Database    d = m.Load();

            Assert.IsNotNull(d);
            Assert.IsNotNull(d.Schemas);
            Assert.AreEqual(1, d.Schemas.Count);

            Schema s = d.Schemas[0];

            Assert.IsNotNull(s);
            Assert.AreSame(d, s.Database);
            Assert.AreEqual("dbo", s.Name);
            Assert.IsNotNull(s.TablesViews);
            Assert.AreEqual(2, s.TablesViews.Count);

            TableView t = s.TablesViews.Where(x => x.Type == TableView.TableViewTypes.Table).SingleOrDefault();

            Assert.IsNotNull(t);
            Assert.AreSame(s, t.Schema);
            Assert.AreEqual("Table4Columns0Rows", t.Name);
            Assert.IsNotNull(t.Columns);
            Assert.AreEqual(4, t.Columns.Count);

            Column c = t.Columns[0];

            Assert.AreEqual("Column1", c.Name);
            Assert.AreEqual("int", c.TypeName);
            Assert.AreEqual(false, c.Nullable);
            Assert.AreEqual(true, c.PrimaryKey);
            Assert.AreSame(t, c.TableView);

            c = t.Columns[1];
            Assert.AreEqual("Column2", c.Name);
            Assert.AreEqual("date", c.TypeName);
            Assert.AreEqual(true, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey);
            Assert.AreSame(t, c.TableView);

            c = t.Columns[2];
            Assert.AreEqual("Column3", c.Name);
            Assert.AreEqual("varchar(max)", c.TypeName);
            Assert.AreEqual(false, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey);
            Assert.AreSame(t, c.TableView);

            c = t.Columns[3];
            Assert.AreEqual("Column4", c.Name);
            Assert.AreEqual("varbinary(50)", c.TypeName);
            Assert.AreEqual(true, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey);
            Assert.AreSame(t, c.TableView);

            //To prevent copy-paste errors in next section that SHOULD reference v not t
            c = null;
            t = null;

            TableView v = s.TablesViews.Where(x => x.Type == Lib.TableView.TableViewTypes.View).SingleOrDefault();

            Assert.IsNotNull(v);
            Assert.AreSame(s, v.Schema);
            Assert.AreEqual("ViewOfTable4Columns0Rows", v.Name);
            Assert.IsNotNull(v.Columns);
            Assert.AreEqual(5, v.Columns.Count);

            c = v.Columns[0];
            Assert.AreEqual("Column1", c.Name);
            Assert.AreEqual("int", c.TypeName);
            Assert.AreEqual(false, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey); //View unable to tell this is part of table's PK
            Assert.AreSame(v, c.TableView);

            c = v.Columns[1];
            Assert.AreEqual("Column2", c.Name);
            Assert.AreEqual("date", c.TypeName);
            Assert.AreEqual(true, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey);
            Assert.AreSame(v, c.TableView);

            c = v.Columns[2];
            Assert.AreEqual("Column3", c.Name);
            Assert.AreEqual("varchar(max)", c.TypeName);
            Assert.AreEqual(false, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey);
            Assert.AreSame(v, c.TableView);

            c = v.Columns[3];
            Assert.AreEqual("Column4", c.Name);
            Assert.AreEqual("varbinary(50)", c.TypeName);
            Assert.AreEqual(true, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey);
            Assert.AreSame(v, c.TableView);

            c = v.Columns[4];
            Assert.AreEqual("TenTimesColumn1", c.Name);
            Assert.AreEqual("int", c.TypeName);
            Assert.AreEqual(true, c.Nullable);
            Assert.AreEqual(false, c.PrimaryKey);
            Assert.AreSame(v, c.TableView);
        }