* Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono * New ADO.NET Providers

There will be three ADO.NET providers that will use TDS.

  1. Mono.Data.SybaseClient namepace and assembly will hold the ADO.NET provider for Sybase SQL Server database. This provider will default to using TDS version 5.0 which can only be used with Sybase.

  2. System.Data.SqlClient namespace and System.Data assembly will hold the ADO.NET provider for Microsoft SQL Server 7.0/2000 databases. This is to be compatible with Microsoft .NET This provider will default to using TDS version 7.0 which only supports Microsoft SQL Server 7.0/2000 just like SqlClient in Microsoft .NET does. There is TDS version of 8.0 which we will need to support as well, but it is used for Microsoft SQL Server 2000 databases.

  3. Mono.Data.TdsClient namespace and assembly is not meant to be an ADO.NET provider in Mono, but a means to provide generic unit tests for the TDS functionality shared by the SqlClient and SybaseClient providers. This provider will default to using TDS version 4.2 which can be used by older Sybase and Microsoft SQL Server databases.

* Building The New Providers

All three providers will use common internal code at Mono.Data.TdsClient.Internal. Any classes in Mono.Data.TdsClient.Internal will have the internal keyword and will be built with the assembly of that provider.

  1. SqlClient will build its assembly System.Data using files from System.Data, System.Data.SqlClient, System.Data.SqlTypes, System.Data.Common, and Mono.Data.TdsClient.Internal.

    SqlClient will only reference the usual suspects: corlib.dll, System.dll, and System.Xml.dll. SqlClient will be a wrapper around TdsClient.Internal, but provide specific functionality to Microsoft SQL Server 7.0/2000 databases.

    SqlClient build example:

     mcs -target:library -out:System.Data.dll \
       System.Data.SqlClient/*.cs \
       ..\Mono.Data.TdsClient\Mono.Data.TdsClient.Internal\*.cs \
       [any other classes in System.Data assembly...]  \
       -r corlib.dll -r System.dll -r System.Xml.dll
    
  2. SybaseClient will build its assembly Mono.Data.SybaseClient using files from Mono.Data.SybaseClient and Mono.Data.TdsClient.Internal. SybaseClient will reference the usual suspects plus System.Data.dll SybaseClient will be a wrapper around TdsClient.Internal, but provide specific functionality to Sybase.

    SybaseClient build example:

     mcs -target:library -out:Mono.Data.SybaseClient.dll \
        Mono.Data.SybaseClient\*.cs \
        ..\Mono.Data.TdsClient\Mono.Data.TdsClient.Internal\*.cs
        -r corlib.dll -r System.dll -r System.Xml.dll -r System.Data.dll
    
  3. TdsClient will build its assembly Mono.Data.TdsClient using files from Mono.Data.TdsClient and Mono.Data.TdsClient.Internal. TdsClient will reference the usual suspects plus System.Data.dll TdsClient is a wrapper provider around TdsClient.Internal used for generic unit tests. TdsClient will a wrapper around TdsClient.Internal as a generic TDS provider and allow TDS configuration options not exposed in SqlClient nor SybaseClient, such as, TdsVersion will be exposed in TdsClient but not in SqlClient nor SybaseClient.

    TdsClient build example:

    mcs -target:library -out:Mono.Data.TdsClient.dll \
        Mono.Data.TdsClient\*.cs \
        Mono.Data.TdsClient.Internal\*.cs \
        -r corlib.dll -r System.dll -r System.Xml.dll -r System.Data.dll
    
* Classes in Mono.Data.TdsClient.Internal will: * Implementation Details of the TDS Protocol * More Information * Contribute

Anybody willing to help? If so, contact any of the people working on the ADO.NET support in Mono: Rodrigo Moya, Tim Coleman, Daniel Morgan, Brian Ritchie, Vladimir Vukicevic, Ville Palo, Franklin Wise, and others.