Carlos, Thank you for your patch. I have committed this fix to cvs for you.
Normally, patches should be created in the directory where the differences have occurred via cvs -z3 diff -u > mypatch and attach that mypatch file to your email to mono-list. This is mentioned at the web page http://www.go-mono.com/ccvs.html Daniel -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Carlos Guzm�n �lvarez Sent: Tuesday, November 19, 2002 2:40 PM To: Mono-List Subject: [Mono-list] [PATCH] DataRow.cs Hello: I�m having problems trying to make this: schemaRow["BaseSchemaName"] = null; SchemaRow is a Datarow instance and BaseSchemaName is defined as: schema.Columns.Add("BaseSchemaName",System.Type.GetType("System.String")); This works well on csc but not on mcs. Here is the patch for this: DataRow.cs The change affects to the indexer: public object this[DataColumn column] Add this to line 99 (before bool objIsDBNull = value.Equals(DBNull.Value);): value = (value == null) ? DBNull.value : value; Here is the indexer changed: public object this[DataColumn column] { [MonoTODO] //FIXME: will return different values depending on DataRowState get { return this[column, DataRowVersion.Current]; } [MonoTODO] set { // The new line value = (value == null) ? DBNull.value : value; bool objIsDBNull = value.Equals(DBNull.Value); if (column == null) throw new ArgumentNullException (); int columnIndex = _table.Columns.IndexOf (column); if (columnIndex == -1) throw new ArgumentException (); if(column.DataType != value.GetType ()) { if(objIsDBNull == true && column.AllowDBNull == false) throw new InvalidCastException (); //else if(objIsDBNull == false) // throw new InvalidCastException (); } if (rowState == DataRowState.Deleted) throw new DeletedRowInaccessibleException (); //MS Implementation doesn't seem to create the proposed or original //set of values when a datarow has just been created or added to the //DataTable and AcceptChanges() has not been called yet. if(rowState == DataRowState.Detached || rowState == DataRowState.Added) { if(objIsDBNull) current[columnIndex] = DBNull.Value; else current[columnIndex] = value; } else { BeginEdit (); // implicitly called rowState = DataRowState.Modified; if(objIsDBNull) proposed[columnIndex] = DBNull.Value; else proposed[columnIndex] = value; } //Don't know if this is the rigth thing to do, //but it fixes my test. I believe the MS docs only say this //method is implicitly called when calling AcceptChanges() // EndEdit (); // is this the right thing to do? } } Best regards Carlos Guzm�n �lvarez Vigo - Spain _______________________________________________ Mono-list maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/mono-list _______________________________________________ Mono-list maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/mono-list
