ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA
Overview Introduction Architecture of ADO.NET ObjectSpaces – New technologies
Introduction Data Storage Connected environment Disconnected environment ADO.NET vs. ADO Demonstration (ADO.NET and Excel)
Data Storage ADO.NET Relational Database Data storage - method of storing specific items that together constitute a unit of information. Hierarchical SQL ServerOracle Access XML StructuredUnstructured Excel Active Directory CSV
Connected Environment (Scenario) 1. Open connection 2. Execute command 3. Process rows in reader 4. Close reader 5. Close connection
Connected Environment Working with data directly via open connection Advantages Simple security realization Work with real data Simple organization of distributed work Drawbacks Continual connection Not available via Internet
Disconnected Environment (Scenarion) 1. Open connection 2. Fill the DataSet 3. Close connection 4. Process the DataSet 5. Open connection 6. Update the data source 7. Close connection
Disconnected Environment Storage of data local copy from repository Possibility to update the main data source Advantages Economy of server resources Does not require continual connection Drawbacks Demands conflict resolution while data update Data is not always up to date
ADO.NET vs. ADO ADO Connection Command RecordSet ADO.NET XxxConnection XxxTransaction XxxCommand XxxDataReader XxxDataAdapter DataSet
Demonstration OleDbConnection conn=new OleDbConnection(); OleDbCommand comm=new OleDbCommand(); OleDbDataAdapter adapt=new OleDbDataAdapter(comm); DataSet data=new DataSet(); conn.ConnectionString= “Provider=Microsoft.Jet.OLEDB.4.0; c:\myexcel.xls;Extended Properties=""Excel 8.0;HDR=NO""“; comm.Connection=conn; comm.CommandText=“select * from [Sheet1$]”; adapt.Fill(data);
Architecture of ADO.NET Data providers What does it look like? Connection to the source Command creation Cursors Data storage in memory DataAdapter – automatic data upload XML Integration
.NET Data Providers Concept of data provider Provider types SQL.NET Data Provider Oracle.NET Data Provider OleDB.NET Data Provider Odbc.NET Data Provider How to select data provider
Как это выглядит.NET Data Provider Connection Command DataReader DataAdapter DataSet DataTable DataRelation DataColumn DataRow DataConstraint SelectCommand InsertCommand DeleteCommand UpdateCommand
Connection What is Connection? Define Connection SqlConnection conn=new SqlConnection(); Conn.ConnectionString=“User ID=sa;password=; Data Source=MyServer;Initial Catalog=Northwind;” ConnectionString Parameters Provider Data Source Initial Catalog Integrated Security UserID/Password
Connection (Error and Pooling) System.Data.SqlClient.SqlException Errors collection SqlError Class LineNumber Message Number Pooling and Dispose method
Command Object A command object is a reference to a SQL statement or stored procedure Properties Connection CommandType CommandText Parameters Methods ExecuteNonQuery ExecuteReader ExecuteScalar
DataReader Object What is query? Forward-only cursor Read method Read next record Return true if record is exist IsDbNull Close method NextResult – for multiply select statements
What Are DataSets and DataTables ServerData Store Database Connection Stored Procedure DataSet DataTable
The DataSet Object Model Common collections Tables (collection of DataTable objects) Relations (collection of DataRelation objects) Data binding to Web and Windows controls supported Schema can be defined programmatically or using XSD DataRow DataColumn DataTable DataRelation Constraints
What Is a DataAdapter? Data source DataAdapter DataTable DataSet DataAdapter Fill Update Fill Update
The XxxDataAdapter Object Model sp_SELECT XxxCommand SelectCommandUpdateCommandInsertCommandDeleteCommand XxxDataAdapter XxxCommand XxxConnection sp_UPDATEsp_INSERTsp_DELETE XxxDataReader
Demo
XML Support ADO.NET is tightly integrated with XML Using XML in a disconnected application XML Web Services DataSet Request data11 SQL query22 Results33 XML 44 Updated XML 55 SQL updates66 Data SourceClient DataSet
Object Spaces Introduction to problem What is Object Spaces? What do we need? How can we resolve the problem
Introduction to Problem There’s something apparently missing Current situation Database public struct Customer { int customerID; string customerName; } ….. Customer LoadCustomer(int id){…} void SaveCustomer(Customer obj){…}
What is Object Spaces? Relation between object and database Way to avoid long-drawn coding ObjectSpace Database Map Files
What do we need? Single table to single Object Object hierarchy to many tables Object hierarchy to single table Single Object to multiple tables Inheritance All types in single table Table for base type and related table per derived type
How we can resolve problem XML Again! RSD – Relational Schema Definition OSD – Object Schema Definition MSD – Mapping Schema definition MappingSchema class
RSD Tables, fields and relations descriptions
OSD Objects description
MSD Mapping Schemes
ObjectSpace methods BeginTransaction Commit Rollback GetObject GetObjectReader GetObjectSet MarkForDeletion PersistChanges Resync StartTracking
msdn.microsoft.com/library