Generic Data Access Layer in C# Using Factory Pattern
Generic Data Access Layer in C# Using Factory Pattern
com/feed/)
(ht t ps://t wit t er.com/csharpdocs)
(ht t ps://www.facebook.com/csharpdocs)
CSHARPDOCS.COM (ht t p://csharpdocs.com) > ADO.NET (ht t p://csharpdocs.com/cat egory/ado-net /) > Generic Dat a Access Layer in C# using
Factory Pat t ern
Encrypt ion and Decrypt ion using RSA Algorit hm in C# (ht t p://csharpdocs.com/encrypt ion-and-decrypt ion-using-rsa-algorit hm-in-c/)
May 02
T his post is about how you can develop a generic dat a access layer (DAL) to access different t ypes of dat abase wit h full CRUD (Creat e, Read,
Updat e and Delet e) support using different t ype of ADO.NET object s.
2. Overview
ADO.Net Provides consist ent access to dat abases like Microsoft SQL Server, Oracle as well as dat a sources exposed t hrough OLE DB and XML.
Data-sharing consumer applications can use ADO.NET to connect to these data sources and retrieve, manipulate, and update data. T he ADO.NET
classes are found in Syst em.Dat a.dll.
The ADO.NET components have been designed to factor data access from data manipulation. There are two central components of ADO.NET that
accomplish this: the Dat aSet , and the .NET Framework data provider, which is a set of components including the Connect ion, Command, Dat aReader,
and Dat aAdapt er objects.
The ADO.NET DataSet is the core component of the disconnected architecture of ADO.NET. The DataSet is explicitly designed for data access
independent of any data source. The Dat aSet cont ains a collect ion of one or more Dat aTable object s made up of rows and columns of dat a, as
well as primary key, foreign key, const raint , and relat ion informat ion about t he dat a in t he Dat aTable object s.
The Connect ion object provides connect ivit y to a dat a source. T he Command object enables access to dat abase commands to ret urn dat a,
modify dat a, run stored procedures, and send or ret rieve paramet er informat ion. T he Dat aReader provides a high-performance st ream of dat a
from t he dat a source. Finally, t he Dat aAdapt er provides t he bridge bet ween t he Dat aSet object and t he dat a source.
T he Dat aAdapt er uses Command object s to execut e SQL commands at t he dat a source to bot h load t he Dat aSet wit h dat a, and reconcile
changes made to t he dat a in t he Dat aSet back to t he dat a source.
Database Objects:
1. Connect ion– Establishes a connection to a specific data source
2. Comman – Executes a command against a data source
3. Dat aReader – Reads a forward-only, read-only stream of data from a data source.
4. Dat aAdapt er – Populates a data set and resolves updates with the data source
Abst ract ing Dat a Access:
ADO.NET is designed around a set of generic interfaces that abstract the underlying data processing functionality. You can use these interfaces directly
to abstract your data access layer so that you can minimize the impact of changing the type of data source that you use. Abstracting data access is
extremely helpful when you are designing systems where your customer chooses the database server.
The core interfaces provided by ADO.NET are found in the System.Data namespace
· IDbConnection – This is an interface for managing database connections.
· IDbCommand – This is an interface for running SQL commands.
· IDbTransaction – This is an interface for managing transactions.
· IDataReader – This is an interface for reading data returned by a command.
· IDataAdapter – This is an interface for channelling data to and from datasets.
The following table shows the provider used to access different types of databases in ADO.NET
Database SQL Server Oracle OLE DB ODBC
Parameter
Data Provider SqlClient OracleClient OleDb Odbc
Namespace Syst em.Dat a.SqlClient Syst em.Dat a.OracleClient Syst em.Dat a.OleDb Syst em.Dat a.Odbc
Connection SqlConnect ion OracleConnect ion OleDbConnect ion OdbcConnect ion
Command SqlCommand OracleCommand OleDbCommand OdbcCommand
Data Adapter SqlDat aAdapt er OracleDat aAdapt er OleDbDat aAdapt er OdbcDat aAdaper
Data Parameter SqlParamet er OracleParamet er
4. Summary
In t his art icle I have explained how to creat e generic dat a access layer in C# using factory pat t ern. In t his post we creat ed separat e classes for
each t ype of dat abase and hence it increased t he complexit y as well. Microsoft has also provided t he DbProviderFactory class in
System.Data.Common namespace. T his class is uses to creat e inst ance for specific provider and t his inst ance is used to creat e funct ions like
CreateParameter, CreateDataAdapter, CreateCommand and CreateConnection. In my next (ht t p://csharpdocs.com/generic-dat a-access-layer-in-c-
using-dbproviderfactories/) post I will show you how DBManager class will use DbProviderFactoryclass to creat e inst ances of different dat abases.
hope you enjoyed t his art icle. If you like t his art icle don’t forget to put your valuable comment s.
ADO.NET (ht t p://csharpdocs.com/t ag/ado-net /), Dat a Access Layer (ht t p://csharpdocs.com/t ag/dat a-access-layer/), Factory
Pat t ern (ht t p://csharpdocs.com/t ag/factory-pat t ern/)
csharpdocs
(mailto:onlinerohit [email protected])
1 comment
1.
coolc () on August 27, 2019
Leave a Reply
You must be logged in (ht t p://csharpdocs.com/wp-login.php?redirect _ to=ht t p%3A%2F%2Fcsharpdocs.com%2Fgeneric-dat a-access-layer-in-c-
using-factory-pat t ern%2F) to post a comment .
Recent Posts
How to Call Stored Procedure using Unit of Work and Ent it y Framework (ht t p://csharpdocs.com/how-to-call-stored-procedure-using-unit -of-
work-and-ent it y-framework/)
A reference guide to access dat a in .Net (ht t p://csharpdocs.com/a-reference-guide-to-access-dat a-in-net /)
Tech News: Microsoft has released in .NET Framework 4.7.2 (ht t p://csharpdocs.com/t ech-news-what s-new-in-net -framework-4-7-2/)
Microsoft Cert ificat ion Roadmap for Developers (ht t p://csharpdocs.com/microsoft -cert ificat ion-roadmap-for-developers/)
How to call stored procedure using repository pat t ern and unit of work (ht t p://csharpdocs.com/call-stored-procedure-using-repository-
pat t ern/)
Categories
.NET Core (ht t p://csharpdocs.com/cat egory/web-t echnology/net -core/) (1)
ADO.NET (ht t p://csharpdocs.com/cat egory/ado-net /) (10)
AngularJS (ht t p://csharpdocs.com/cat egory/javascript /angular-js/) (1)
Art icles (ht t p://csharpdocs.com/cat egory/ot her/art icles/) (2)
ASP.NET MVC (ht t p://csharpdocs.com/cat egory/web-t echnology/asp-net -mvc/) (8)
Best Pract ices (ht t p://csharpdocs.com/cat egory/designandarchit ect ure/best -pract ices/) (2)
C# (ht t p://csharpdocs.com/cat egory/c/) (7)
Chart s (ht t p://csharpdocs.com/cat egory/web-t echnology/chart s/) (6)
Design and Archit ect ure (ht t p://csharpdocs.com/cat egory/designandarchit ect ure/) (3)
Ent it y Framework (ht t p://csharpdocs.com/cat egory/ado-net /ent it y-framework/) (5)
Int erview Quest ions (ht t p://csharpdocs.com/cat egory/ot her/int erview-quest ions/) (11)
Javascript (ht t p://csharpdocs.com/cat egory/javascript /) (2)
jQuery (ht t p://csharpdocs.com/cat egory/javascript /jquery/) (2)
Ot her (ht t p://csharpdocs.com/cat egory/ot her/) (3)
Performance Opt imizat ion (ht t p://csharpdocs.com/cat egory/designandarchit ect ure/performance-opt imizat ion/) (1)
Securit y (ht t p://csharpdocs.com/cat egory/securit y/) (1)
SQL Server (ht t p://csharpdocs.com/cat egory/sql-server/) (35)
Tech News (ht t p://csharpdocs.com/cat egory/ot her/t ech-news/) (1)
Tutorials (ht t p://csharpdocs.com/cat egory/t utorials/) (3)
WCF (ht t p://csharpdocs.com/cat egory/web-services/wcf/) (2)
Web API (ht t p://csharpdocs.com/cat egory/web-services/web-api/) (1)
Web Services (ht t p://csharpdocs.com/cat egory/web-services/) (3)
Web Technology (ht t p://csharpdocs.com/cat egory/web-t echnology/) (9)
Subscribe Me
Name
Email *
Subscribe
Contact Us
Name *
First Last
E-mail *
Comment or Message *
Submit
Categories
.NET Core (ht t p://csharpdocs.com/cat egory/web-t echnology/net -core/) (1)
ADO.NET (ht t p://csharpdocs.com/cat egory/ado-net /) (10)
AngularJS (ht t p://csharpdocs.com/cat egory/javascript /angular-js/) (1)
Art icles (ht t p://csharpdocs.com/cat egory/ot her/art icles/) (2)
ASP.NET MVC (ht t p://csharpdocs.com/cat egory/web-t echnology/asp-net -mvc/) (8)
Best Pract ices (ht t p://csharpdocs.com/cat egory/designandarchit ect ure/best -pract ices/) (2)
C# (ht t p://csharpdocs.com/cat egory/c/) (7)
Chart s (ht t p://csharpdocs.com/cat egory/web-t echnology/chart s/) (6)
Design and Archit ect ure (ht t p://csharpdocs.com/cat egory/designandarchit ect ure/) (3)
Ent it y Framework (ht t p://csharpdocs.com/cat egory/ado-net /ent it y-framework/) (5)
Int erview Quest ions (ht t p://csharpdocs.com/cat egory/ot her/int erview-quest ions/) (11)
Javascript (ht t p://csharpdocs.com/cat egory/javascript /) (2)
jQuery (ht t p://csharpdocs.com/cat egory/javascript /jquery/) (2)
Ot her (ht t p://csharpdocs.com/cat egory/ot her/) (3)
Performance Opt imizat ion (ht t p://csharpdocs.com/cat egory/designandarchit ect ure/performance-opt imizat ion/) (1)
Securit y (ht t p://csharpdocs.com/cat egory/securit y/) (1)
SQL Server (ht t p://csharpdocs.com/cat egory/sql-server/) (35)
Tech News (ht t p://csharpdocs.com/cat egory/ot her/t ech-news/) (1)
Tutorials (ht t p://csharpdocs.com/cat egory/t utorials/) (3)
WCF (ht t p://csharpdocs.com/cat egory/web-services/wcf/) (2)
Web API (ht t p://csharpdocs.com/cat egory/web-services/web-api/) (1)
Web Services (ht t p://csharpdocs.com/cat egory/web-services/) (3)
Web Technology (ht t p://csharpdocs.com/cat egory/web-t echnology/) (9)
Tags
Action Filters (1) (http://csharpdocs.com/tag/action-filters/) ADO.NET (7) (http://csharpdocs.com/tag/ado-net/) Articles (3)
(http://csharpdocs.com/tag/articles/) Bar Chart (1) (http://csharpdocs.com/tag/bar-chart/) Best Practices of SQL Dployment (1) (http://csharpdocs.com/tag/best-practices-of-sql-
dployment/) Charts in MVC (2) (http://csharpdocs.com/tag/charts-in-mvc/) Coding Standards (1) (http://csharpdocs.com/tag/coding-standards/) Column Chart (1)
(http://csharpdocs.com/tag/column-chart/) Data Access Layer (4) (http://csharpdocs.com/tag/data-access-layer/) Dependency Injection (1)
(http://csharpdocs.com/tag/dependency-injection/) Deployment Script (1) (http://csharpdocs.com/tag/deployment-script/) Development Best Practices (1) (http://csharpdocs.com/tag/development-best-
practices/) Development Stack (2) (http://csharpdocs.com/tag/development-stack/) Donut Chart (1) (http://csharpdocs.com/tag/donut-chart/) Emails in C# (1)
(http://csharpdocs.com/tag/emails-in-c/) Encryption and Decryption (1) (http://csharpdocs.com/tag/encryption-and-decryption/) Entity Framework (5)
(http://csharpdocs.com/tag/entity-framework/) Export to CSV (1) (http://csharpdocs.com/tag/export-to-csv/) Export to Excel (1) (http://csharpdocs.com/tag/export-to-
excel/) Export to PDF (1) (http://csharpdocs.com/tag/export-to-pdf/) Export to Word (1) (http://csharpdocs.com/tag/export-to-word/) Factory Pattern (1) (http://csharpdocs.com/tag/factory-pattern/) Generic
Pie Chart (1) (http://csharpdocs.com/tag/pie-chart/) RSA Algorithm (1) (http://csharpdocs.com/tag/rsa-algorithm/) Security (1) (http://csharpdocs.com/tag/security/) Send email (1)
Recent Posts
How to Call Stored Procedure using Unit of Work and Ent it y Framework (ht t p://csharpdocs.com/how-to-call-stored-procedure-using-unit -of-
work-and-ent it y-framework/)
A reference guide to access dat a in .Net (ht t p://csharpdocs.com/a-reference-guide-to-access-dat a-in-net /)
Tech News: Microsoft has released in .NET Framework 4.7.2 (ht t p://csharpdocs.com/t ech-news-what s-new-in-net -framework-4-7-2/)
Microsoft Cert ificat ion Roadmap for Developers (ht t p://csharpdocs.com/microsoft -cert ificat ion-roadmap-for-developers/)
How to call stored procedure using repository pat t ern and unit of work (ht t p://csharpdocs.com/call-stored-procedure-using-repository-
pat t ern/)
WCF Beginners – St ep by st ep WCF approach (ht t p://csharpdocs.com/wcf-beginners-st ep-by-st ep-wcf-implement at ion/)
St udent Course Inst ructor based SQL Queries (ht t p://csharpdocs.com/st udent -course-inst ructor-based-sql-int erview-queries/)
St udent Course Inst ructor based SQL Int erview Quest ions (ht t p://csharpdocs.com/st udent -course-inst ructor-int erview-quest ions/)
Frequent ly asked SQL Queries in Int erviews (ht t p://csharpdocs.com/frequent ly-asked-sql-queries-in-int erviews/)
Sort ing, Filt ering, Searching and Paginat ion using SQL Stored Procedure (ht t p://csharpdocs.com/sort ing-filt ering-searching-paginat ion-
using-sql-stored-procedure/)
SQL Triggers (ht t p://csharpdocs.com/sql-t riggers/)
SQL Funct ions (ht t p://csharpdocs.com/sql-funct ions/)
© 2019 CSHARPDOCS.COM.