ADO.NET - | Лаборатория ITLab
Download
Report
Transcript ADO.NET - | Лаборатория ITLab
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
Data storage - method of storing specific items
that together constitute a unit of information.
Data Storage
Unstructured Structured
Excel
Hierarchical
CSV XML
Active Directory
Relational Database
SQL Server
Oracle
Access
ADO.NET
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
ADO.NET
Command
RecordSet
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
SelectCommand
DataReader
InsertCommand
DataAdapter
DeleteCommand
UpdateCommand
DataSet
DataTable
DataRelation
DataColumn
DataRow
DataConstraint
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
DataSet
DataTable
DataTable
Connection
Stored
Procedure
Database
Server
Data Store
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
DataColumn
DataTable
DataRelation
DataRow
Constraints
What Is a DataAdapter?
DataSet
Data source
DataAdapter
DataTable
Fill
Update
DataAdapter
DataTable
Fill
Update
The XxxDataAdapter Object Model
XxxDataAdapter
SelectCommand
UpdateCommand
InsertCommand
DeleteCommand
XxxCommand
XxxCommand
XxxCommand
XxxDataReader
XxxCommand
XxxConnection
sp_SELECT
sp_UPDATE
sp_INSERT
sp_DELETE
Demo
XML Support
ADO.NET is tightly integrated with XML
Using XML in a disconnected application
XML Web Services
Client
Data Source
1
Request data
2
4
XML
DataSet
3
5
Updated XML
DataSet
6
SQL query
Results
SQL updates
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
public struct Customer
{
int customerID;
string customerName;
}
…..
Customer LoadCustomer(int id){…}
void SaveCustomer(Customer obj){…}
Database
What is Object Spaces?
Relation between object and database
Way to avoid long-drawn coding
ObjectSpace
Map Files
Database
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
<rsd:Database Name="Northwind" Owner="sa"
xmlns:rsd="http://schemas.microsoft.com/data/2002/09/28/rsd">
<r:Schema Name="dbo" xmlns:r="http://schemas.microsoft.com/data/2002/09/28/rsd">
<rsd:Tables>
<rsd:Table Name="Customers">
<rsd:Columns>
<rsd:Column Name="CustomerID" SqlType="nchar" Precision="5" />
<rsd:Column Name="CompanyName" SqlType="nvarchar" Precision="40" />
</rsd:Columns>
<rsd:Constraints>
<rsd:PrimaryKey Name="PK_Customers">
<rsd:ColumnRef Name="CustomerID" />
</rsd:PrimaryKey>
</rsd:Constraints>
</rsd:Table>
</rsd:Tables>
</r:Schema>
</rsd:Database>
OSD
Objects description
<osd:ExtendedObjectSchema Name="DataTypesOSD"
xmlns:osd="http://schemas.microsoft.com/data/.../persistenceschema">
<osd:Classes>
<osd:Class Name="Samples.Customer">
<osd:Member Name="Id" Key="true" />
<osd:Member Name="Company" />
</osd:Class>
</osd:Classes>
</osd:ExtendedObjectSchema>
MSD
Mapping Schemes
<m:MappingSchema xmlns:m="http://schemas.microsoft.com/data/2002/09/28/mapping">
<m:DataSources>
<m:DataSource Name="NorthwindRSD" Type="SQL Server" Direction="Source">
<m:Schema Location="RSD.XML" />
<m:Variable Name="Customers" Select="Customers" />
</m:DataSource>
<m:DataSource Name="DataTypesOSD" Type="Object" Direction="Target">
<m:Schema Location="OSD.XML" />
</m:DataSource>
</m:DataSources>
<m:Mappings>
<m:Map SourceVariable="Customers" TargetSelect="Samples.Customer">
<m:FieldMap SourceField="CustomerID" TargetField="Id" />
<m:FieldMap SourceField="CompanyName" TargetField="Company" />
</m:Map>
</m:Mappings>
</m:MappingSchema>
ObjectSpace methods
BeginTransaction
Commit
Rollback
GetObject
GetObjectReader
GetObjectSet
MarkForDeletion
PersistChanges
Resync
StartTracking
msdn.microsoft.com/library