Typed DataSets in .NET

Typed DataSet

 
As all of we know, we can specify the Data type when we create a DataColumn for a DataTable. This is to enforce the runtime Type-safety for the column so that only data of specified data type can be stored in the column. In the same way, in most cases, we prefer to make a DataSet itself as Type-safe so as to protect it from runtime mismatch. Hence Typed DataSets generate classes that expose each object in the DataSet in a Type-safe manner. These classes inherit directly from the DataSet class.
 
Let us look into a small example which explains a Typed DataSet.
 
1. Using DataSet 
  1. //Create DataAdapter  
  2. SqlDataAdapter daEmp = new SqlDataAdapter("SELECT empno,empname,empaddress FROM EMPLOYEE",conn);  
  3. //Create a DataSet Object  
  4. DataSet dsEmp = new DataSet();  
  5. //Fill the DataSet  
  6. daEmp.Fill(dsEmp,"EMPLOYEE");  
  7. //Let us print first row and first column of the table  
  8. Console.Write(dsEmp.Tables["EMPLOYEE"].Rows[0][0].ToString());  
  9. //Assign a value to the first column  
  10. dsEmp.Tables["EMPLOYEE"].Rows[0][0] = "12345";//This will generate runtime error as empno column is integer  
If we observe the above code we will get a runtime error when this code gets executed as the value assigned to the column (empno) does not take string value. Also, any misspelling of the column will generate a runtime error. And also we need to go through the hierarchy to get the final value.
 
2. Using Typed DataSet 
  1. //Create DataAdapter  
  2. SqlDataAdapter daEmp = new SqlDataAdapter("SELECT empno,empname,empaddress FROM EMPLOYEE",conn);  
  3. //Create a DataSet Object  
  4. EmployeeDS dsEmp = new EmployeeDS ();  
  5. //Fill the DataSet  
  6. daEmp.Fill(dsEmp,"EMPLOYEE");  
  7. //Let us print first row and first column of the table  
  8. Console.Write(dsEmp.EMPLOYEE[0].empno.ToString());  
  9. //Assign a value to the first column  
  10. dsEmp.EMPLOYEE[0].empno = "12345";//This will generate compile time error.  
If we see the above code, a typed dataset is very much similar to a normal dataset. But the only difference is that the schema is already present for the same. Hence any mismatch in the column will generate compile-time errors rather than runtime error as in the case of a normal dataset. Also accessing the column value is much easier than the normal dataset as the column definition will be available in the schema.
 

How to Generate a Typed DataSet?

 
Let's create a typed DataSet using Visual Studio IDE.
 

Creating a Typed DataSet in Visual Studio

 
Let me explain a step by step procedure to create a Typed DataSet in Visual Studio.
 
1. Open VS .Net IDE and Click on File -> New -> Project and Select Console Application.
 
2. Enter the name for the project. Say TypedDataSetTest.
 
 
3. Right-click on the solution and click on Add-> Add New Item will show a dialog box.
 
 
Select DataSet from the templates pane, give the name (Say TypedDs.xsd), and click on Open. This will add a file by name TypedDs.xsd to the solution.
 
 
4. Click on the Server Explorer browse to the database and drop the table on the TypedDs.xsd file.
 
If we check the XML file for the same then we can see the schema for the table.
 
 
There is also a corresponding DataSet class created in the project. This DataSet class and its respective XSD files have the definitions of database columns and their types. This DataSet can be used in the same manner as the normal dataset to get the data.
 


Similar Articles