X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=web%2Fado-net;h=cd6ea65cfe42786a88044795167c06f4ab24123f;hb=eb16387133698b5311dcc0c8ef6747d3833ea5ba;hp=438b47cb2be195bf064f1998538d5e72a06cd26d;hpb=222fb82852d07d35d1c5a7bc145715d5d6cd07ab;p=mono.git
diff --git a/web/ado-net b/web/ado-net
index 438b47cb2be..cd6ea65cfe4 100644
--- a/web/ado-net
+++ b/web/ado-net
@@ -1,44 +1,446 @@
* ADO.NET
- The coordinator for the ADO.NET implementation is Rodrigo Moya.
+
Mono's ADO.NET Developers:
-* Action plan
+
- The current plan to implement ADO.NET is as follows:
+
+ Developer |
+ Email |
+ Contribution |
+
- Step 1: SqlClient:
+
+ Rodrigo Moya |
+ rodrigo -AT- ximian.comNOSPAM |
+ ADO.NET coordinator, OLE DB provider, and tests |
+
-
- * Implementation of System.Data.SqlClient based on
- the PostgreSQL C API.
+
+ Daniel Morgan |
+ danmorg -AT- sc.rr.comNOSPAM |
+ MySQL, PostgreSQL, Oracle providers, and tests |
+
- * Once the System.Data.SqlClient code is functional and
- is usable by other people, we willl move it to
- System.Data.PostgreSQL, and will convert the existing
- System.Data.SqlClient to be just a wrapper around
- System.Data.PostgreSQL.
+
+ Tim Coleman |
+ tim -AT- timcoleman.comNOSPAM |
+ Microsoft SQL Server, Sybase, TDS providers, Oracle,
+ and tests.
+ He has
+ contributed to other parts of Mono too, such as,
+ EnterpriseServices,
+ XML, and WebServices. |
+
-
+
+ Brian Ritchie |
+ brianlritchie -AT- hotmail.comNOSPAM |
+ ODBC provider and the ProviderFactory in Mono.Data |
+
+
+
+ Vladimir Vukicevic |
+ vladimir -AT- pobox.comNOSPAM |
+ SQL Lite provider. He has contributed to GTK# and mPhoto too. |
+
+
+
+ Christopher Bockner |
+ cleared -AT- rogers.comNOSPAM |
+ IBM DB2 Universal Database provider |
+
+
+
+ Ville Palo |
+ vi64pa -AT- koti.soon.fiNOSPAM |
+ XML stuff in System.Data including DataSet
+ and XmlDataDocument, and tests |
+
+
+
+ Gonzalo Paniagua Javier |
+ gonzalo -AT- ximian.comNOSPAM |
+ Integration between System.Web and System.Data |
+
+
+
+ Gaurav Vaish |
+ gvaish -AT- iitk.ac.inNOSPAM |
+ Web controls |
+
+
+
+ Phillip Jerkins |
+ Phillip.Jerkins -AT- morgankeegan.comNOSPAM |
+ Named Instance support in System.Data.SqlClient |
+
+
+
+
+** Bugs and Feature Requests
+
+
+
+ - Bugs with Mono or any data provider in Mono should be reported
+ in Mono's Bugzilla here. If you
+ do not have a Bugzilla user account, it is free
+ and easy to create
+ one here.
+
+ - Any RFE (Request For Enhancement) for features missing or new functionality
+ should be entered as a bug in Bugzilla too
+
+
+
+** ADO.NET Data Providers
+
+List of ADO.NET Data Providers working in Mono:
+
+
+
+Providers which we do not have, but we would like to have. Currently,
+ some of these databases are supported via the ODBC or OLE DB providers.
+
+
+ - Managed Classes for SqlXml which is
+ a .NET data provider for retrieving XML data from a Microsoft SQL Server 2000 database. The System.Data.SqlClient provider
+ in Mono can be used as a starting point at mcs/class/System.Data/System.Data.SqlClient.
+ - miniSQL
+ - BerkeleyDB (Sleepycat)
+ - SapDB
+ - Informix
+ - Foxpro
+ - Microsoft Access - could be done by creating C# bindings to MDB Tools
+ - dbase or xbase type database files
+ - Others are welcome
+
+
+External Projects that have created ADO.NET Providers that work on Mono:
+
+
+
+ - Firebird Interbase
is a
+ Firebird SQL Managed data provider. It can be used with Interbase databases too. It
+ is written in 100%C# and does not require a client library. Works on .NET and Mono.
+ - Npgsql is a
+ PostgreSQL Managed data provider written
+ in 100% C#, does not require a client library, and works on .NET and Mono
+ - MySQLNet is a
+ MySQL Managed data provider written in 100% C#, does not
+ require a client library, and works on .NET and Mono
+
+
+** Tools
+
+Some tools that can be used for ADO.NET and other technologies (ASP.NET, XML, etc).
- Step 2: OleDBClient:
+
+ - SQL# CLI - a SQL query tool with a command-line interface.
+ It can be used to enter and execute SQL statements or
+ execute a batch of SQL commands from a file. It can
+ be used to test connection strings, connect to various ADO.NET
+ providers, save output to text, html, or xml. It is a work-in-progress.
+ The SQL# CLI is distributed with the
+ Mono runtime and class libraries as an executable assembly sqlsharp.exe.
+ The source to SQL# CLI can be found in the mcs source at
+ mcs/tools/SqlSharp/SqlSharpCli.cs
+
+
+ SQL# GUI - a graphical SQL query tool allows a user
+ to enter SQL commands in a top panel which is a text editor. It
+ has a toolbar and menu for various tasks, such as, executing
+ SQL commands one-at-a-time or in a batch. The results would appear
+ in a bottom panel in a grid or could be saved to a file (xml, html, csv).
+ Also, the bottom panel would allow logging of SQL command executed.
+ Currently, there is a SQL# For GTK# which
+ provides a GUI interface using the Gtk# toolkit. SQL# For GTK#
+ is a work-in-progress and can be found in the mcs source at
+ mcs/tools/SqlSharp/gui/gtk-sharp
+
+
+Tools we would like to have, but they have not been created yet:
+
+
+ - XML Schema Definition tool xsd.exe needs
+ to be created. Maybe this TODO item should be at the System.XML web page instead.
+
+
+ - This tool
+ would work like the xsd.exe tool included with
+ the .NET Framework. The Xsd.exe tools has the
+ following uses:
+
+ - XDR to XSD - used to generate an XML schema from an XDR (XML Data Reduced schema) file.
+ XDR was used by Microsoft prior to XSD becoming a W3C recommendation. So, this needs
+ to be supported for legacy reasons
+ - XML to XSD - used to generate an XML schema from an XML file
+ - XSD to DataSet - used to generate DataSet classes from an XSD schema file. The
+ DataSet classes created can then be used with XML data
+ - XSD to Classes - used to generate classes from an XSD schema file. The
+ classes created can be used with System.XML.Serialization.XMLSerializer
+ to read and write XML code that follows the schema
+ - Classes to XSD - used to generate an XML schema
+ from type(s) in a assembly file. The
+ XML schema created by the tool defines the XML format used
+ by System.XML.Serialization.XMLSerializer
+
+ - Xsd.exe is used to manipulate XML schemas that
+ follow the http://www.w3.org/XML/Schema">XML Schema Definition (XSD) language
+ recommended by the World Wide Web Consortium (W3C)
+
+ - How this tool could be created:
+
+ - Write xsd.exe in C# and run on Mono
+ - Make sure we have XML Schema support in System.Xml.Schema. Currently,
+ it is wrapped around libxlst
+ - XML serialization support in System.Data classes
+ - Create the TypedDataSetGenerator class in System.Data
+ - Using CodeDOM or Reflection.Emit to create code
+ - Make sure DataSet, XmlDataDocument, and related classes
+ are implemented fully
+
+
+
+
+
+
+
+ Application XML Configuration File Editor - a tool
+ to create and edit an application configuration file, such as,
+ we have a .net application named Accouting.exe, the tool could edit
+ the application configuration file Accounting.exe.config so a user could
+ connect to the database used by the program. This tool has not
+ been created.
+
+ Configuration Command-Line and GUI Tools for ADO.NET.
+ These tools have not been started. The tools would be written in
+ C# and run on Mono. The
+ configuration tool can be used to do the following:
+
+ - bebased on the Application XML Configuration File Editor
+ - setup DSNs for the ODBC and OLE-DB
+ providers and configurations for
+ their underlying libraries (unixODBC and libgda)
+ - setup configurations for the Mono.Data.ProviderFactory
+ that Brian Ritchie created
+ - setup native database client library configurations too, such as,
+ freetds.conf for Microsoft SQL Server and Sybase
+
+
+
+
+
+** Extra Classes in Mono ADO.NET
+
+ An ADO.NET Provider Factory
+ was created by Brian Ritchie. The
+ Provider Factory is a way to dynamically create
+ connections, commands, parameters, and data adapters based on configuration
+ information.
+
+** Current Status
+
+
Various ADO.NET Providers have been created at various stages of
+ development including:
+ Firebird/Interbase, IBM DB2 Universal Database, MySQL, ODBC, OLE DB, Oracle,
+ PostgreSQL, SQL Lite, Sybase, Microsoft SQL Server, and TDS Generic.
+ See their respective web page for more information.
+
+
Data Relations via DataRelation, DataRelationCollection, and
+ other classes have not been implemented
+
+
Constraints need lots of work
+
+
XML Schema Definition tool xsd.exe that is included
+ in the .NET Framework has not been created for Mono
+
+
TypeDataSetGenerator needs to be stubbed and implemented.
+
+
DataSet, DataAdaptor, DataTable, DataRelation, DataRow, DataColumn,
+ DataColumnCollection, DataRowCollection, and others need more work. There are
+ many classes that are just stubs and need to be implemented. Ville Palo has been
+ doing much testing here.
+
+
XML support in System.Data needs work. This involves working on
+ the classes: DataSet, XmlDataDocument, and the method ExecuteXmlReader() that
+ exists in a provider's class that implements IDbCommand, and others.
+ Stuart Caborn has started the XML support in a DataSet. Tim Coleman started
+ XML support in the ExecuteXmlReader() in a SqlCommand. Ville Palo has been
+ heavily modifying DataSet, XmlDataDocument, and other classes for reading
+ and writing XML. XML Serialization support in DataSet needs to be implemented.
+
+
Integration with ASP.NET has been created. Data binding of
+ a DataTable in a DataSet to a System.Web.UI.WebControls.DataGrid works. Data binding
+ of other types works too.
+
+
Database Access from ASP.NET:
- * On Unix systems: System.Data.OleDb will use LibGDA as its
- engine.
+ - Take a look at xsp in cvs and look at the examples in test: dbpage1.aspx
+ and dbpage2.aspx:
+
+ - Notice that the namespace System.Data is imported via import
+ - A NameValueCollection is gotten using ConfigurationSettings.AppSetings. These
+ settings are gotten from the file server.exe.config which is a XML file. The XML
+ file has a section appSettings. In the appSettings section, you have keys
+ for DBProviderAssembly, DBConnectionType, and DBConnectionString.
+
+ - DBProviderAssembly is the assembly of the ADO.NET provider.
+ For example:
+ "Mono.Data.PostgreSqlClient"
+ - DBConnectionType is the System.Type of the class that
+ implements System.Data.IDbConnection that is found
+ in the DBProviderAssembly.
+ For example:
+ "Mono.Data.PostgreSqlClient.PgConnection"
+ - DBConnectionString is the ConnectionString to set to the
+ IDbConnection object to use in opening a connection to a data source.
+ For Example:
+ "hostaddr=127.0.0.1;user=monotest;password=monotest;dbname=monotest"
+
+ - The function GetConnectionData() gets the database provider assembly, connection type,
+ and connection string parameters if they exist; otherwise, it uses default values. This is
+ done during the loading of the web page.
+ - With the connection parameters, the assembly is loaded, the connection type is verified that
+ it implements IDbConnection and an instance of the class can be created, creates a instance
+ of the class, sets the connection string, and opens the connection.
+
+
+
+
+ Integration with Windows.Forms has not been started, such as, data binding
+ to a System.Windows.Forms.DataGrid. This may involve implementing many classes
+ in System.Windows.Forms and System.Data.
+
+
Integration with GTK#
+ has not been started, such as, data binding
+ to a GtkTreeView. This may involve creating new classes
+ to go between the glist data model and the ADO.NET data model.
+ Mike Kestner or Rachel Hestilov would be the best people to ask for help on GTK#.
+
+
Integration with QT# has not been started. Any information on
+ how this can be done is appreciated. Adam Treat would be the best
+ person to ask about QT#.
+
+
Building System.Data
+
+
The System.Data.dll gets built with the rest of the class library.
+ To compile the System.Data.dll assembly separately, you need:
- LibGDA is the data access engine that is used by
- Gnome-Db (only libgda, not libgnomedb at all).
+ On Unix
+
+
+ * update your mono sources. Be sure you have latest mcs.exe
+ and .dll's, since there have been many fixes needed for
+ compilation on Linux.
- * On Windows systems: System.Data.OleDb will use OLE-DB as
- its engine.
+ * compile System.Data.dll:
+
+ cd mcs/class/System.Data
+ mcs --target library -o \
+ System.Data.dll @list
+
- Step 3: System.Data.SqlClient Providers:
+ On Windows
- * System.Data.SqlClient will then become a generic
- proxy for binding to other SQL implementations other
- than PostgreSQL (MySQL on Unix/Windows; MS SQL on
- Window; Interbase on Unix/Windows). Others are welcomed.
+ * update your mono sources. Be sure you have latest mcs.exe
+ and .dll's. You can use the same method as Linux,
+ or you can use NAnt.
+
+ * To use NAnt:
+
+
+ cd mcs/class/System.Data
+ ../../nant/NAnt.exe
+
+
+ * This will automatically copy the System.Data.dll to Test.
+ If you need to do a clean for the System.Data.dll assembly,
+
+
+ cd mcs/class/System.Data
+ ../../nant/NAnt.exe clean
+
+** Testing
+
+
+ - Testing connection-oriented classes are done
+ via the provider specific tests
+ found in the mcs source at mcs/class
+
+
+ Name |
+ Assembly / Namespace |
+ Test |
+
+
+
+ Microsoft SQL Server |
+ System.Data / System.Data.SqlClient |
+ SqlTest.cs at System.Data/Test |
+
+
+
+ PostgreSQL (Mono) |
+ Mono.Data.PostgreSqlClient / Mono.Data.PostgreSqlClient |
+ PostgresTest.cs at System.Data/Test |
+
+
+
+ MySQL (Mono) |
+ Mono.Data.MySql / Mono.Data.MySql |
+ MySqlTest.cs at Mono.Data.MySql/Test |
+
+
+
+ Oracle (Mono) |
+ System.Data.OracleClient / System.Data.OracleClient |
+ TestOracleClient.cs at System.Data.OracleClient |
+
+
+
+ ODBC (Mono) |
+ System.Data.OracleClient / System.Data.OracleClient |
+ TestOracleClient.cs at System.Data.OracleClient |
+
+
+
+
+
+ - Testing non-connection classes are
+ done via mono's modified version of NUnit.
+
+ - To run all the NUnit tests for Mono, you need the mcs source. cd to the root
+ of the mcs source. To run it:
+
+ - On Linux: make -f makefile test
+ - On Windows: make test
+
+
+ - If you just want to run the NUnit tests for System.Data, you would cd into
+ the mcs source at class/System.Data/Test and run it:
+
+ - On Linux: make -f makefile test
+ - On Windows: make test
+
+
+
+
+
+
+