ADO.NET - 1.2


Compatibility: v2 v3 Cloud
What's new? Release Notes
ID: com.castsoftware.dotnet.ado

Description

This extension provides support for SQL query execution calls under ADO.NET using C# language.

Function Point, Quality and Sizing support

  • Function Points (transactions): a green tick indicates that OMG Function Point counting and Transaction Risk Index are supported
  • Quality and Sizing: a green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist
Function Points (transactions) Quality and Sizing

Supported ADO.NET Data Providers

Summary

Vendor Provider Name Namespace
IBM Db2 .NET Provider IBM.Data.DB2
Db2 .NET Provider for .NET Core IBM.Data.DB2.Core
IBM iSeries Db2 .NET Provider IBM.Data.DB2.iSeries
IBM Informix .NET Provider IBM.Data.Informix
Microsoft .NET Data Provider for SQL Server Microsoft.Data.SqlClient
System.Data.SqlClient
.NET Data Provider for SQLite Microsoft.Data.Sqlite
System.Data.SQLite
.NET Data Provider for Oracle System.Data.OracleClient
.NET Data Provider for OLE DB System.Data.OleDb
.NET Data Provider for ODBC System.Data.Odbc
.NET Data Provider for Entity Framework System.Data.EntityClient
.NET Core Data Provider for Entity Framework System.Data.Entity.Core.EntityClient
.NET Data Provider for SQL Server Compact System.Data.SqlServerCe
ADO.NET Common Provider Interfaces System.Data.Common
.NET Data Provider for LINQ to SQL System.Data.Linq
System.Linq
MySQL MySQL Connector/NET MySql.Data.MySqlClient
MySqlConnector ADO.NET provider MySqlConnector
Oracle Server Oracle Data Provider for .NET - Unmanaged Driver Oracle.DataAccess.Client
Oracle Data Provider for .NET - Managed Driver Oracle.ManagedDataAccess.Client
Devart Devart’s dotConnect Devart.Common
Devart’s dotConnect for Oracle Devart.Data.Oracle
Devart’s dotConnect for MySql Devart.Data.MySql
Devart’s dotConnect for SQLite Devart.Data.SQLite
Devart’s dotConnect for PostgreSql Devart.Data.PostgreSql
Devart’s dotConnect for LINQ to SQL Devart.Data.Linq
PostgreSQL .NET Data Provider for PostgreSQL Npgsql
Praeclarum Praeclarum SQLite ADO.NET Provider SQLite
SAP ASE .NET Data Provider for Sybase ASE Sybase.Data.AseClient
.NET Core Data Provider for Sybase ASE AdoNetCore.AseClient
Teradata .NET Data Provider for Teradata Teradata.Client.Provider
Snowflake .NET Client for Snowflake DB REST API Snowflake.Client
Snowflake Connector for .NET Snowflake.Data.Client
Spring .NET Spring Data Generic ADO.NET Provider Spring.Data.Generic
Spring.Data.Core
LinqToDB LinqToDB Provider LinqToDB.Mapping
LinqToDB.DataExtensions
LinqToDB.AsyncExtensions
ServiceStack ServiceStack OrmLite Provider ServiceStack.DataAnnotations
ServiceStack.OrmLite

Method Details


IBM

IBM.Data.DB2 — Db2 .NET Provider
Class Methods
IBM.Data.DB2.DB2Command ExecuteReader
ExecutePageReader
ExecuteNonQuery
ExecuteResultSet
ExecuteScalar
ExecuteXmlReader
ExecuteRow
IBM.Data.DB2.DB2BulkCopy WriteToServer
IBM.Data.DB2.DB2DataAdapter Fill
FillSchema
Update

IBM.Data.DB2.Core — Db2 .NET Provider for .NET Core
Class Methods
IBM.Data.DB2.Core.DB2Command ExecuteReader
ExecutePageReader
ExecuteNonQuery
ExecuteResultSet
ExecuteScalar
ExecuteXmlReader
ExecuteRow
IBM.Data.DB2.Core.DB2BulkCopy WriteToServer
IBM.Data.DB2.Core.DB2DataAdapter Fill
FillSchema
Update

IBM.Data.DB2.iSeries — IBM iSeries Db2 .NET Provider
Class Methods
IBM.Data.DB2.iSeries.iDB2Command ExecuteReader
ExecuteNonQuery
ExecuteScalar
ExecuteXmlReader
IBM.Data.DB2.iSeries.iDB2DataAdapter Fill
FillSchema
Update

IBM.Data.Informix — IBM Informix .NET Provider
Class Methods
IBM.Data.Informix.IfxCommand ExecuteReader
ExecuteNonQuery
ExecuteScalar

Microsoft

Microsoft.Data.SqlClient — .NET Data Provider for SQL Server
Class Methods
Microsoft.Data.SqlClient.SqlCommand ExecuteReader
ExecuteReaderAsync
BeginExecuteReader
ExecuteNonQuery
ExecuteNonQueryAsync
BeginExecuteNonQuery
ExecuteScalar
ExecuteScalarAsync
ExecuteXmlReader
ExecuteXmlReaderAsync
BeginExecuteXmlReader
Microsoft.Data.SqlClient.SqlBulkCopy WriteToServer
WriteToServerAsync
Microsoft.Data.SqlClient.SqlDataAdapter Fill
FillSchema
Update

System.Data.SqlClient — .NET Data Provider for SQL Server
Class Methods
System.Data.SqlClient.SqlCommand ExecuteReader
ExecuteReaderAsync
BeginExecuteReader
ExecuteNonQuery
ExecuteNonQueryAsync
BeginExecuteNonQuery
ExecuteScalar
ExecuteScalarAsync
ExecuteXmlReader
ExecuteXmlReaderAsync
BeginExecuteXmlReader
System.Data.SqlClient.SqlBulkCopy WriteToServer
WriteToServerAsync
System.Data.SqlClient.SqlDataAdapter Fill
FillSchema
Update

Microsoft.Data.Sqlite — .NET Data Provider for SQLite
Class Methods
Microsoft.Data.Sqlite.SqliteCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync

System.Data.SQLite — .NET Data Provider for SQLite
Class Methods
System.Data.SQLite.SQLiteCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
Execute
System.Data.SQLite.SQLiteDataAdapter Fill
FillSchema
Update

System.Data.OracleClient — .NET Data Provider for Oracle
Class Methods
System.Data.OracleClient.OracleCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteOracleNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteOracleScalar
ExecuteScalarAsync
System.Data.OracleClient.OracleDataAdapter Fill
FillSchema
Update

System.Data.OleDb — .NET Data Provider for OLE DB
Class Methods
System.Data.OleDb.OleDbCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
System.Data.OleDb.OleDbDataAdapter Fill
FillSchema
Update

System.Data.Odbc — .NET Data Provider for ODBC
Class Methods
System.Data.Odbc.OdbcCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
System.Data.Odbc.OdbcDataAdapter Fill
FillSchema
Update

System.Data.EntityClient — .NET Data Provider for Entity Framework
Class Methods
System.Data.EntityClient.EntityCommand ExecuteReader
ExecuteNonQuery
ExecuteScalar

System.Data.Entity.Core.EntityClient — .NET Core Data Provider for Entity Framework
Class Methods
System.Data.Entity.Core.EntityClient.EntityCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar

System.Data.SqlServerCe — .NET Data Provider for SQL Server Compact
Class Methods
System.Data.SqlServerCe.SqlCeCommand ExecuteReader
ExecuteNonQuery
ExecuteScalar
ExecuteResultSet

System.Data.Common — ADO.NET Common Provider Interfaces
Class Methods
System.Data.Common.DbCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
System.Data.Common.DbBatch ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
System.Data.Common.DbDataAdapter Fill
FillSchema
Update

System.Data.Linq — LINQ to SQL
Class Methods
System.Data.Linq.DataContext ExecuteCommand
ExecuteQuery
System.Data.Linq.Table InsertOnSubmit
DeleteOnSubmit
InsertAllOnSubmit
DeleteAllOnSubmit
GetEnumerator

System.Linq — LINQ to SQL
Class Methods
System.Linq.Enumerable ToArray
ToList
ToDictionary
ToHashSet
ToLookup
System.Linq.Queryable All
Any
Average
Contains
Count
ElementAt
ElementAtOrDefault
First
FirstOrDefault
Last
LastOrDefault
LongCount
Max
Min
Single
SingleOrDefault
Sum

MySQL

MySql.Data.MySqlClient — MySQL Connector/NET
Class Methods
MySql.Data.MySqlClient.MySqlCommand ExecuteReader
ExecuteReaderAsync
BeginExecuteReader
ExecuteNonQuery
ExecuteNonQueryAsync
BeginExecuteNonQuery
ExecuteScalar
ExecuteScalarAsync
MySql.Data.MySqlClient.MySqlDataAdapter Fill
FillSchema
Update

MySqlConnector — MySqlConnector ADO.NET provider
Class Methods
MySqlConnector.MySqlCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
MySqlConnector.MySqlBatch ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
MySqlConnector.MySqlBulkCopy WriteToServer
WriteToServerAsync
MySqlConnector.MySqlBulkLoader Load
LoadAsync
MySqlConnector.MySqlDataAdapter Fill
FillSchema
Update

Oracle Server

Oracle.DataAccess.Client — Unmanaged Driver
Class Methods
Oracle.DataAccess.Client.OracleCommand ExecuteReader
ExecuteNonQuery
ExecuteScalar
ExecuteXmlReader
ExecuteStream
ExecuteToStream
Oracle.DataAccess.Client.OracleBulkCopy WriteToServer
Oracle.DataAccess.Client.OracleDataAdapter Fill
FillSchema
Update

Oracle.ManagedDataAccess.Client — Managed Driver
Class Methods
Oracle.ManagedDataAccess.Client.OracleCommand ExecuteReader
ExecuteNonQuery
ExecuteScalar
ExecuteXmlReader
ExecuteStream
ExecuteToStream
Oracle.ManagedDataAccess.Client.OracleBulkCopy WriteToServer
Oracle.ManagedDataAccess.Client.OracleDataAdapter Fill
FillSchema
Update

Devart

Devart.Common — Devart’s dotConnect
Class Methods
Devart.Common.DbCommandBase ExecutePageReader
BeginExecuteReader
ExecuteNonQuery
BeginExecuteNonQuery
ExecuteScalar
Devart.Common.SqlStatement Execute
ExecuteNonQuery
Devart.Common.DbScript Execute
ExecuteNext
Devart.Common.DbDataAdapter FillPage

Devart.Data.Oracle — Devart’s dotConnect for Oracle
Class Methods
Devart.Data.Oracle.OracleCommand ExecuteReader
ExecutePageReader
ExecuteNonQuery
ExecuteScalar
ExecuteArray
Devart.Data.Oracle.OracleDataAdapter Fill
FillPage
FillSchema
Update

Devart.Data.MySql — Devart’s dotConnect for MySql
Class Methods
Devart.Data.MySql.MySqlCommand ExecuteReader
BeginExecuteReader
ExecutePageReader
Devart.Data.MySql.MySqlHelper ExecuteReader
ExecuteNonQuery
ExecuteScalar
Devart.Data.MySql.MySqlStatement Execute
Devart.Data.MySql.MySqlDataAdapter Fill
FillPage
FillSchema
Update

Devart.Data.SQLite — Devart’s dotConnect for SQLite
Class Methods
Devart.Data.SQLite.SQLiteCommand ExecuteReader
ExecutePageReader
Devart.Data.SQLite.SQLiteDataAdapter Fill
FillSchema
Update (overridden from System.Data.Common)

Devart.Data.PostgreSql — Devart’s dotConnect for PostgreSql
Class Methods
Devart.Data.PostgreSql.PgSqlCommand ExecuteReader
ExecutePageReader
Devart.Data.PostgreSql.PgSqlDataAdapter Fill
FillSchema
Update (overridden from System.Data.Common)

Devart.Data.Linq — Devart’s dotConnect for LINQ to SQL
Class Methods
Devart.Data.Linq.DataContext ExecuteCommand
ExecuteQuery

PostgreSQL

Npgsql — .NET Data Provider for PostgreSQL
Class Methods
Npgsql.NpgsqlCommand ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
Npgsql.NpgsqlBatch ExecuteReader
ExecuteReaderAsync
ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync
Npgsql.NpgsqlDataAdapter Fill
FillSchema
Update

Praeclarum

SQLite — Praeclarum SQLite ADO.NET Provider
Class Methods
SQLite.SQLiteCommand ExecuteQuery
ExecuteDeferredQuery
ExecuteNonQuery
ExecuteScalar
ExecuteQueryScalars
SQLite.SQLiteConnection Execute
ExecuteScalar
Query
QueryScalars
DeferredQuery
GetTableInfo
DropTable
CreateTable
CreateTables
Get
Find
FindWithQuery
Insert
InsertAll
InsertOrReplace
Update
UpdateAll
Delete
DeleteAll
SQLite.SQLiteAsyncConnection CreateTableAsync
CreateTablesAsync
DropTableAsync
InsertAsync
InsertAllAsync
InsertOrReplaceAsync
UpdateAsync
UpdateAllAsync
DeleteAsync
DeleteAllAsync
GetAsync
FindAsync
FindWithQueryAsync
GetTableInfoAsync
ExecuteAsync
ExecuteScalarAsync
QueryAsync
QueryScalarsAsync
DeferredQueryAsync

SAP ASE

Sybase.Data.AseClient — .NET Data Provider for Sybase ASE
Class Methods
Sybase.Data.AseClient.AseCommand ExecuteReader
BeginExecuteReader
ExecuteNonQuery
BeginExecuteNonQuery
ExecuteScalar
ExecuteXmlReader
BeginExecuteXmlReader
Sybase.Data.AseClient.AseDataAdapter Fill
FillSchema
Update

AdoNetCore.AseClient — .NET Core Data Provider for Sybase ASE
Class Methods
AdoNetCore.AseClient.AseCommand ExecuteReader
ExecuteNonQuery
ExecuteScalar
ExecuteXmlReader
AdoNetCore.AseClient.AseDataAdapter Fill
FillSchema
Update

Teradata

Teradata.Client.Provider — .NET Data Provider for Teradata
Class Methods
Teradata.Client.Provider.TdCommand ExecuteReader
ExecuteReaderAsync
BeginExecuteReader
ExecuteNonQuery
ExecuteNonQueryAsync
BeginExecuteNonQuery
ExecuteScalar
ExecuteScalarAsync
ExecuteCreateProcedure
Teradata.Client.Provider.TdDataAdapter Fill
FillSchema
Update

Snowflake

Snowflake.Client — .NET Client for Snowflake DB REST API
Class Methods
Snowflake.Client.SnowflakeClient ExecuteAsync
ExecuteScalarAsync
QueryAsync
QueryRawResponseAsync

Snowflake.Data.Client — Snowflake Connector for .NET
Class Methods
Snowflake.Data.Client.SnowflakeDbCommand ExecuteNonQuery
ExecuteNonQueryAsync
ExecuteScalar
ExecuteScalarAsync

Spring

Spring.Data.Generic — Spring Data Generic ADO.NET Provider
Class Methods
Spring.Data.Generic.AdoTemplate Execute
ExecuteNonQuery
ExecuteScalar
QueryForObject
QueryForObjectDelegate
QueryWithCommandCreator
QueryWithResultSetExtractor
QueryWithResultSetExtractorDelegate
QueryWithRowCallback
QueryWithRowCallbackDelegate
QueryWithRowMapper
QueryWithRowMapperDelegate

Spring.Data.Core — Spring Data Core ADO.NET Provider
Class Methods
Spring.Data.Core.AdoTemplate DataSetCreate
DataSetCreateWithParams
DataSetFill
DataSetFillWithParameters
DataSetUpdate
DataSetUpdateWithCommandBuilder
DataTableCreate
DataTableCreateWithParams
DataTableFill
DataTableFillWithParams
DataTableUpdate
DataTableUpdateWithCommandBuilder
Execute
ExecuteNonQuery
ExecuteScalar
QueryForObject
QueryForObjectDelegate
QueryWithCommandCreator
QueryWithResultSetExtractor
QueryWithResultSetExtractorDelegate
QueryWithRowCallback
QueryWithRowCallbackDelegate
QueryWithRowMapper
QueryWithRowMapperDelegate

LinqToDB

LinqToDB.Mapping
Class Methods
LinqToDB.Mapping.EntityMappingBuilder HasTableName

LinqToDB.DataExtensions
Class Methods
LinqToDB.DataExtensions CreateTable
CreateTableAsync
DropTable
DropTableAsync
Insert
InsertAsync
InsertOrReplace
InsertOrReplaceAsync
InsertWithIdentity
InsertWithInt32Identity
InsertWithInt64Identity
InsertWithDecimalIdentity
Update
UpdateAsync
Delete
DeleteAsync

LinqToDB.AsyncExtensions
Class Methods
LinqToDB.AsyncExtensions AllAsync
AnyAsync
AverageAsync
FirstAsync
FirstOrDefaultAsync
SingleAsync
SingleOrDefaultAsync
ContainsAsync
CountAsync
LongCountAsync
MinAsync
MaxAsync
SumAsync
ToListAsync
ToArrayAsync
ToDictionaryAsync
ForEachAsync
ForEachUntilAsync

LinqToDB.LinqExtensions
Class Methods
LinqToDB.LinqExtensions Update
UpdateAsync
Delete
DeleteAsync
Insert
InsertAsync
InsertWithIdentity
InsertWithInt32Identity
InsertWithInt64Identity
InsertWithDecimalIdentity
InsertWithIdentityAsync
InsertWithInt32IdentityAsync
InsertWithDecimalIdentityAsync
InsertOrUpdate
InsertOrUpdateAsync
Drop
DropAsync
Truncate
TruncateAsync

ServiceStack

ServiceStack.DataAnnotations
Attribute
ServiceStack.DataAnnotations.AliasAttribute

ServiceStack.OrmLite
Class Methods
ServiceStack.OrmLite.OrmLiteSchemaApi CreateTable
CreateTables
CreateTableIfNotExists
DropAndCreateTable
DropAndCreateTables
DropTable
DropTables
ServiceStack.OrmLite.OrmLiteReadApi Select
SelectFmt
SelectByIds
SelectNonDefaults
SelectLazy
SelectLazyFmt
Where
WhereLazy
Single
SingleFmt
SingleById
SingleWhere
Scalar
ScalarFmt
Column
ColumnFmt
ColumnLazy
ColumnDistinct
ColumnDistinctFmt
Lookup
Dictionary
KeyValuePairs
Exists
SqlList
SqlColumn
SqlScalar
LoadSingleById
LoadReferences
Select
SelectMulti
Single
Scalar
Count
RowCount
LoadSelect
ServiceStack.OrmLite.OrmLiteWriteApi ExecuteSql
Insert
InsertUsingDefaults
InsertIntoSelect
InsertAll
BulkInsert
Update
UpdateAll
Delete
DeleteAll
DeleteNonDefaults
DeleteById
DeleteByIds
Save
SaveAll
SaveReferences
ExecuteProcedure
Update
UpdateAdd
UpdateOnly
UpdateOnlyFields
UpdateNonDefaults
ServiceStack.OrmLite.OrmLiteWriteExpressionsApi InsertOnly
Delete
DeleteWhere

What results can you expect?

Objects

The following objects are created by the extension:

Icon Object type Description When is this object created ?
Dotnet Ado Query An object is created for each SQL query found and resolved in an Dotnet CRUD method call
DotNet Unknown ADO Query An object is created for each SQL query found but could not be resolved correctly in an Dotnet CRUD method call, only one is created per real caller
DotNet ADO Entity An object is created for each entity found and resolved in an Dotnet CRUD method call
DotNet ADO Entity Operation An object is created for each entity operation found and resolved in an Dotnet CRUD method call

The following links will be created by the Ado.Net extension, or by alternate extensions.

Link type Real caller type Callee type Additional information
callLink C# Method Created by this analyser - Dotnet Ado
callLink C# Method Created by this analyser - Dotnet Ado
callLink C# Method Created by this analyser - Dotnet Ado
callLink C# Method Created by this analyser - Dotnet Ado
relyonLink Created by this analyser - Dotnet Ado
useLink Created by Sql analyser
useLink Created by Sql analyser
callLink Created by Sql analyser
useLink Created by Missing tables and procedures for .NET when the object is not analyzed
callLink Created by Missing tables and procedures for .NET when the object is not analyzed

Git samples

Direct SQLexternal link

DirectSQL-main\TestSqlLiteDatabase\SqlResultTest.cs
private static void CreateTableForTest(IDbConnection connection)
{
   using (var command = connection.CreateCommand())
   {
       command.CommandText =
           "create table " +
           "TEST_TABLE(" +
           "TEST_COL1 text," +
           "TEST_COL2 integer" +
           ")";

       command.ExecuteNonQuery();
   }
}

One Ado object is created:

DirectSQL-main\TestSqlLiteDatabase\QueryDefaultTransaction.cs
private static void CreateTableForTest(IDbConnection connection)
{
   using( var command = connection.CreateCommand())
   {
       command.CommandText =
                   "create table " +
                    "TEST_TABLE(" +
                    "TEST_VAL1 text," +
                    "TEST_VAL2 integer" +
                    ")";

       command.ExecuteNonQuery();
   }
}

One Ado object is created:

Employee managementexternal link

ASPNetCore_ADO-master\EmployeeManagement\Models\EmployeeDataAccessLayer.cs
public Employee GetEmployeeData(int? id)
        {
            Employee employee = new Employee();

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                string sqlQuery = "SELECT * FROM tblEmployee WHERE EmployeeID= " + id;
                SqlCommand cmd = new SqlCommand(sqlQuery, con);

                con.Open();
                SqlDataReader rdr = cmd.ExecuteReader();

                while (rdr.Read())
                {
                    employee.ID = Convert.ToInt32(rdr["EmployeeID"]);
                    employee.Name = rdr["Name"].ToString();
                    employee.Gender = rdr["Gender"].ToString();
                    employee.Department = rdr["Department"].ToString();
                    employee.City = rdr["City"].ToString();
                }
            }
            return employee;
        }

One Ado object is created:

Test case

using System.Data.Linq;
using System.Data.Linq.Mapping;

namespace Test01_linq_sql
{
    [Table(Name = "CustomerInfo")]
    public class CustomerData
    {
        [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
        public int CustomerId { get; set; }

        [Column]
        public string CustomerName { get; set; } = default!;

        [Column]
        public string FirstName { get; set; } = default!;

        [Column]
        public string Contact { get; set; } = default!;

        [Column]
        public string Address { get; set; } = default!;

        [Column]
        public string City { get; set; } = default!;

        [Column]
        public string PostalCode { get; set; } = default!;

        [Column]
        public string Country { get; set; } = default!;
    }

    public class Program
    {
        static void Main(string[] args)
        {
            string connectionStr = "Data Source=.;database=AdoNet;Integrated Security=SSPI;";
            DataContext AdoNetDb = new DataContext(connectionStr);
            Table<CustomerData> CustomerTable = AdoNetDb.GetTable<CustomerData>();

            // display values after reading
            foreach(var line in CustomerTable)
            {
                Console.WriteLine(line.CustomerName);
            }

            // Create a new Order object
            CustomerTable.InsertOnSubmit(
                new CustomerData
                    {

                        CustomerName = "Can1",
                        FirstName = "Furrya",
                        Contact = "trans_tarzan_of_the_jungle@gmail.com",
                        Address = "Amazonia",
                        City = "NoWhere",
                        PostalCode = "XXXXXX",
                        Country = "Brazil"
                    }
            );

            CustomerData ord = new CustomerData
            {
                // CustomerId = 6,
                CustomerName = "De La Crème",
                FirstName = "Thierry",
                Contact = "itsmaam@gmail.com",
                Address = "Down town LA",
                City = "California",
                PostalCode = "XXXXXX",
                Country = "Murika"
            };

            CustomerTable.InsertOnSubmit(ord);
            AdoNetDb.SubmitChanges();

            IEnumerable<CustomerData> productQuery =  
                        from prod in CustomerTable  
                        where prod.CustomerId == 3  
                        select prod;  

            foreach(var i in productQuery)
            {
                Console.WriteLine(i.CustomerName);
            }

            CustomerTable.DeleteOnSubmit(ord);

            AdoNetDb.SubmitChanges();
            IEnumerable<CustomerData> productQuery2 =  
                        from prod in CustomerTable   
                        select prod;  

            foreach(var i in productQuery2)
            {
                Console.WriteLine(i.CustomerName);
            }

        }
    }
}

4 Ado objects are created:

Limitations

  • In case of dotnet ado query object, each evaluation that results in standard exception or empty value will lead to one unknown object creation. Also, failure in value conversion will create unknown object.
  • As of now, there isn’t any creation for either unknown entity or its operation. If a vital information is missing, the extension will jump to the next evaluation to begin a new process.
  • Some query objects need better fitlering to determine if their values should be considered unknown.
  • Support for Linq To Dataset is not covered in this release.