Originally published on eve.gd on 31 July 2008.
Read this post on the web (with images, PDF and citation details)
Just been asked some further questions about the DataExecutor class on FreeNode and thought I'd give some usage instructions/clarification here.
Howto: Fill a strongly typed dataset
Set your base class (of your TableAdapter) to Tools.genericTableAdapter.
Fill your strongly typed DataSet thus:
DataExecutor de = null;
try{
de = new DataExecutor();
const string TABLEPREFIX = "blog";
MySqlCommand cmd = new MySqlCommand(string.Format("SELECT * FROM {0} WHERE id=@id", TABLEPREFIX));
cmd.Parameters.AddWithValue("@id", id);
de.NextCommand(cmd, false);
DataSchema.blog_postsDataTable postsDT = new DataSchema.blog_postsDataTable();
DataTable dtRef = (DataTable)postsDT;
de.DataSetSchema(ref dtRef);
} finally {
if(de != null) de.Close();
}
Why do it like this?
Answer: because it lets you hook into the return results for testing purposes.
de = new Tools.DataExecutor(true); de.OnTestModeFill += new Tools.DataExecutor.TestModeFillInterceptor(taskFillHandler);
Then in taskFillHandler you will receive a reference to a DataTable that you can populate in whatever way you like to ensure that your application behaves correctly - aka. offline database unit testing!