bring back CodeContracts to mobile profiles.
[mono-project.git] / mcs / class / System.Data / TODO
blobb9f16964980fb7378a4443164fb95b9f56228022
1 System.Data TODO List
2 =====================
4 Update this file as needed...
6 * To get ExecuteReader() in a SqlCommand object to return 
7   a SqlDataReader object which can Read() data and get a String or
8   Int32 from the database.  Other types can be done later.
9   
10   A class (SqlDataReader) that implements IDataReader/IDataRecord
11   only has one row in memory at a time.
13 In order to do this, we need to compile and edit these classes:
14         SqlDataReader   DataTable       DataRowCollection               DataRow
15                                                                 DataColumnCollection    DataColumn
16                                                                 DataConstraintCollection DataConstraint
17                                                                 DataRelationCollection  DataRelation
18                                                                 DataTableCollection
19         and dependencies...
21 System.Data.Common classes that need to be implemented:
22  - implement DataAdapter.cs
23  - implement DataColumnMapping.cs
24  - implement DataColumnMappingCollection.cs
25  - implement DataTableMapping.cs
26  - implement DataTableMappingCollection.cs
27  - implement DbDataAdapter.cs
28  - implement DbDataPermission.cs
29  - implement DbDataPermissionAttribute.cs
30  - implement RowUpdatedEventArgs.cs
31  - implement RowUpdatingEventArgs.cs
33 The following classes implement InternalDataCollectionBase:
34         * DataRowCollection
35         * DataColumnCollection
36         * DataTableCollection
37         * DataRelationCollection - an abstract class used by DataTable and DataSet
38         * ConstraintCollection
40 DataTableRelationCollection is an internal class that implements DataRelationCollection
41 and is used by DataTable for parent/child relations.  Don't know if it will/will not
42 be used by DataSet.
44 Other classes, structs, etc. that are missing:
45         DataRowView
46         DataSysDescriptionAttribute
47         DataViewManager
48         DataViewSetting
49         FillErrorEventArgs
50         MergeFailedEventArgs
51         TypedDataSetGenerator
53 The additional System.Data.SqlTypes classes need to be implemented:
54         SqlByte
55         SqlDataTime
56         SqlDecimal
57         SqlDouble
58         SqlGuid
59         SqlInt16
60         SqlInt64
61         SqlMoney
62         SqlSingle
64 * provide a standard scheme for storing
65   connection string data
67 * allow Execute methods in SqlCommand to
68   call a stored procedure
70 * Create a script for testing System.Data:
71   - calls script to create 
72     a test database named monotestdb
73   - set up nunit for testing System.Data
74   - set up System.Data.Config or some other 
75     file to hold connection strings and other
76     configuration settings for the testing System.Data
77   - any other stuff needed...
79 * get SqlParameter/SqlParameterCollection
80   working so you can:
81   - for queries/commands that have parameters:
82     o  input 
83     o  output 
84     o  return
85     o  input/output
86   - call a stored procedure with parameters
88 * be able to return a XmlReader from
89   using method ExecuteXmlReader of
90   a SqlCommand object
92 * get SqlDataAdapter/DataSet working
94 * Create Library for PInvoking into libgda
95   This will be used by System.Data.OleDb classes
97 * Begin System.Data.OleDb classes:
98   - OleDbConnection
99   - OleDbCommand
100   - OleDbTransaction
102 * Do more of the OleDb classes to
103   retrieve a OleDbDataReader object
104   from a query (SELECT FROM):
105   - OleDbDataReader
106   - others...
108 * Do more OleDb classes for DataSet:
109   - OleDbDataAdapter
110   - others...
111   
112 * Security Audit of System.Data
114 * Create a MySQL ADO.NET Provider
116 * Create an Oracle ADO.NET Provider
118 * Create an Interbase ADO.NET Provider
120 * Create a Sybase ADO.NET Provider (TDS?)
122 * Create an IBM UDB DB2 ADO.NET Provider
124 * Create other ADO.NET providers...
126 Integration
127 ===========
129 * get System.Data to work with ASP.NET's
130   System.Web.UI.WebControls.DataGrid
132 * get System.Data to work with GUI
133   System.Windows.Forms.DataGrid
136 Provider Factoros (target: mono 1.2 PROFILE=net_2_0)
137 ====================================================
139 * Create Configuration Class
140         DbProviderFactoriesConfigurationHandler - done
141         DbProviderConfigurationHandler - not much documents/use cases.
142         ConnectionStringsSection                - done
143         ConnectionStringSettingsCollection      - done
144         ConnectionStringSettings                - done
146         FIXME: Currently the test case for ConnectionStringsSection
147         fails as new configuration API is not yet implemented in
148         System.dll.
150         A temporary handler ConnectionStringSectionHandler is
151 available in System.Data.dll.
153 * Create Base class
154         DbProviderFactories - done
155         DbProviderFactory - done
156         DbConnectionFactory
157         
158         Add nunit test cases for these. - done
159         
160 * Create Factory classes & methods for Providers.
161         Factory methods for SqlClient - done.
162         Factory methods for Odbc provider - done.
163         Factory methods for OleDb provider
165 * DbConnectionStringBuilder - done
167 Asynchronous Command Execution ((target: mono 1.2 PROFILE=net_2_0)
168 ==================================================================
170 * Implement the following Asynchronous Execution Commands for SqlClient
172    - BeginExecuteNonQuery (2 overrides) - done
173    - BeginExecuteReader   (3 overrides) - done
174    - BegineExecuteXmlReader             - done
176    - Implement corresponding asynchronous methods in Tds driver - done
178 * Pending
179    
180    - Provide Stand Alone test cases
181    - Check whether the result column is xml while doing
182      EndExecuteXmlReader.
185 Test Cases
186 ==========
188 * Provide a single consistent test fixture for all data providers
189    available in Test/ProviderTests
191 * NUnit-ize Provider Tests
193 * Make these tests to be able to run by command
194    make run-test PROVIDER=mysql   # to run tests marked for mysql & SQL92.
196 * Provide SQL92 complaint scripts for shema & data, to be loaded
197    irrelevant of data providers.