+#if NET_2_0
+ [Test]
+ public void GetUpdateCommandBoolTest_CheckNonUpdatableColumns ()
+ {
+ IDbConnection conn = ConnectionManager.Singleton.Connection;
+ try {
+ ConnectionManager.Singleton.OpenConnection ();
+ IDbCommand cmd = conn.CreateCommand ();
+ cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
+ cmd.ExecuteNonQuery ();
+
+ string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
+ SqlDataAdapter da = new SqlDataAdapter (selectQuery, (SqlConnection) conn);
+ DataSet ds = new DataSet ();
+ da.Fill (ds);
+ Assert.AreEqual (1, ds.Tables.Count, "#1");
+ Assert.AreEqual (4, ds.Tables [0].Columns.Count, "#2");
+
+ SqlCommandBuilder cb = new SqlCommandBuilder (da);
+ SqlCommand updateCmd = cb.GetUpdateCommand (true);
+ Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, [value] = @value WHERE (([id] = @id) AND (" +
+ "[counter] = @counter) AND ((@value = 1 AND [value] IS NULL) OR ([value] = @value)))",
+ updateCmd.CommandText, "#3");
+ Assert.AreEqual (6, updateCmd.Parameters.Count, "#4");
+
+ SqlCommand delCmd = cb.GetDeleteCommand (true);
+ Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE (([id] = @id) AND ([counter] = @counter) AND " +
+ "((@value = 1 AND [value] IS NULL) OR ([value] = @value)))", delCmd.CommandText, "#5");
+ Assert.AreEqual (4, delCmd.Parameters.Count, "#6");
+ } finally {
+ ConnectionManager.Singleton.CloseConnection ();
+ }
+ }
+
+ [Test]
+ public void GetUpdateDeleteCommandBoolTest_CheckParameters ()
+ {
+ IDbConnection conn = ConnectionManager.Singleton.Connection;
+ try {
+ ConnectionManager.Singleton.OpenConnection ();
+ SqlDataAdapter adapter = new SqlDataAdapter ("select id, type_varchar from string_family",
+ (SqlConnection)conn);
+ SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
+
+ SqlCommand updateCommand = cb.GetUpdateCommand (true);
+ Assert.AreEqual (5, updateCommand.Parameters.Count, "#1");
+ Assert.AreEqual (SqlDbType.VarChar, updateCommand.Parameters ["@type_varchar"].SqlDbType, "#2");
+ // FIXME: NotWorking
+ //Assert.AreEqual (1, updateCommand.Parameters ["@type_char"].Value, "#3");
+
+ SqlCommand delCommand = cb.GetDeleteCommand (true);
+ Assert.AreEqual (3, delCommand.Parameters.Count, "#4");
+ Assert.AreEqual (SqlDbType.Int, delCommand.Parameters ["@type_varchar"].SqlDbType, "#5");
+ Assert.AreEqual (1, delCommand.Parameters ["@type_varchar"].Value, "#6");
+ } finally {
+ ConnectionManager.Singleton.CloseConnection ();
+ }
+ }
+#endif