33
ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Embed Size (px)

Citation preview

Page 1: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

ADO.NET: Working in Disconnected Environment

Sergey Baidachni

MCT, MCSD, MCDBA

Page 2: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Overview

Introduction Architecture of ADO.NET ObjectSpaces – New technologies

Page 3: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Introduction

Data Storage Connected environment Disconnected environment ADO.NET vs. ADO Demonstration (ADO.NET and Excel)

Page 4: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Data Storage

Data Storage

ADO.NET

Relational Database

Data storage - method of storing specific items that together constitute a unit of information.

Hierarchical

SQL Server Oracle

Access

XML

StructuredUnstructured

Excel

Active Directory

CSV

Page 5: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Connected Environment (Scenario)1. Open connection

2. Execute command

3. Process rows in reader

4. Close reader

5. Close connection

Page 6: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 7: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 8: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 9: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

ADO.NET vs. ADO

ADO

Connection

Command RecordSet

ADO.NET

XxxConnection XxxTransaction XxxCommand XxxDataReader

XxxDataAdapter DataSet

Page 10: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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);

Page 11: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 12: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

.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

Page 13: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Как это выглядит.NET Data Provider

Connection

Command

DataReader

DataAdapter

DataSet

DataTable

DataRelation

DataColumn

DataRow

DataConstraint

SelectCommand

InsertCommand

DeleteCommand

UpdateCommand

Page 14: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 15: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Connection (Error and Pooling) System.Data.SqlClient.SqlException Errors collection SqlError

Class LineNumber Message Number

Pooling and Dispose method

Page 16: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Command Object

A command object is a reference to a SQL statement or stored procedure

Properties Connection CommandType CommandText Parameters

Methods ExecuteNonQuery ExecuteReader ExecuteScalar

Page 17: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 18: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

What Are DataSets and DataTables

Server Data Store

Database

Connection Stored Procedure

DataSetDataTable

DataTable

Page 19: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 20: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

What Is a DataAdapter?

Data sourceDataAdapterDataTable

DataTable

DataSet

DataAdapter

FillFill

UpdateUpdateFillFill

UpdateUpdate

Page 21: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

The XxxDataAdapter Object Model

sp_SELECT

XxxCommandXxxCommand

SelectCommand UpdateCommand InsertCommand DeleteCommand

XxxDataAdapter

XxxCommandXxxCommand XxxCommandXxxCommand XxxCommandXxxCommand

XxxConnectionXxxConnection

sp_UPDATE sp_INSERT sp_DELETE

XxxDataReaderXxxDataReader

Page 22: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Demo

Page 23: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

XML Support

ADO.NET is tightly integrated with XML Using XML in a disconnected application

XML Web Services

DataSetDataSet

Request data1111

SQL query2222

Results3333XML4444

Updated XML5555SQL updates

6666

Data SourceClient

DataSetDataSet

Page 24: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

Object Spaces

Introduction to problem What is Object Spaces? What do we need? How can we resolve the problem

Page 25: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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){…}

Page 26: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

What is Object Spaces?

Relation between object and database Way to avoid long-drawn coding

ObjectSpace Database

Map Files

Page 27: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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

Page 28: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

How we can resolve problem

XML Again! RSD – Relational Schema Definition OSD – Object Schema Definition MSD – Mapping Schema definition MappingSchema class

Page 29: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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>

Page 30: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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>

Page 31: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

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>

Page 32: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

ObjectSpace methods

BeginTransaction Commit Rollback GetObject GetObjectReader GetObjectSet MarkForDeletion PersistChanges Resync StartTracking

Page 33: ADO.NET: Working in Disconnected Environment Sergey Baidachni MCT, MCSD, MCDBA

msdn.microsoft.com/library