public void Test_BuildQueryFromRowState()
        {
            var dt2Sql = new Services.DataTableToSql(DataBaseType.SqlServer);

            // create an datatable you want to convert to sql
            var dt = new DataTable("Employee");

            dt.Columns.Add("IdentityKey", typeof(int));
            dt.Columns["IdentityKey"].AutoIncrement = true;
            dt.PrimaryKey = new[] { dt.Columns["IdentityKey"] };
            dt.Columns.Add("FirstName", typeof(string));
            dt.Columns.Add("LastName", typeof(string));
            dt.Rows.Add(1, "John", "Doe");

            // create dbparameters from my object
            var dbParameters = dt2Sql.BuildDbParameterList(dt.Rows[0], (s, o) => new SqlParameter(s, o));

            // create my parameterized sql based on my specified action type
            var insertSql = dt2Sql.BuildQueryFromRowState(dt.Rows[0], "Employee");

            // convert my parameterize sql to be readable
            var readAble = dt2Sql.SqlSyntaxHelper.ConvertParameterSqlToReadable(dbParameters, insertSql, Encoding.UTF8);

            // unit test
            Assert.AreEqual(readAble, "INSERT INTO Employee ([FirstName],[LastName]) VALUES ('John','Doe')");
        }
        public void Test_Anonymous_T_BuildQuery_With_Specified_Table_Name()
        {
            RunTestOnAllDBTypes(delegate(DataBaseType type)
            {
                var dt2Sql = new Services.DataTableToSql(type);

                var insertSql = dt2Sql.BuildQuery(MockDataIdentityKey, ActionType.Insert);
                Assert.AreEqual(EmployeeWithIdentityKeySqlColumn.ToSql(ActionType.Insert, type), insertSql, "DataTable 2 Sql insertSql Failed");

                var updateSQL = dt2Sql.BuildQuery(MockDataIdentityKey, ActionType.Update);
                Assert.AreEqual(EmployeeWithIdentityKeySqlColumn.ToSql(ActionType.Update, type), updateSQL, "DataTable 2 Sql updateSQL Failed");

                var deleteSQL = dt2Sql.BuildQuery(MockDataIdentityKey, ActionType.Delete);
                Assert.AreEqual(EmployeeWithIdentityKeySqlColumn.ToSql(ActionType.Delete, type), deleteSQL, "DataTable 2 Sql deleteSQL Failed");

                if (type == DataBaseType.Sqlite || type == DataBaseType.MySql)
                {
                    return;                     // TODO :: fIX for sqlite
                }
                // TODO :: FIX
                var upsertSQL = dt2Sql.BuildQuery(MockDataIdentityKey, ActionType.Upsert);
                Assert.AreEqual(EmployeeWithIdentityKeySqlColumn.ToSql(ActionType.Upsert, type), upsertSQL, "DataTable 2 Sql upsertSQL Failed");
            });
        }