[Mono-list] XSD creates buggy typed datasets

Juergen Frieling jfrieling@cis-comsoft.de
Fri, 29 Oct 2004 13:21:02 +0200


Hi all,

is anybody working with strongly typed datasets?

I know the CustomDataClassGenerator is marked unfinished but thought this
was only because of missing serialization.

Anyway, here is what I found out:

Im loading a plain DataSet and then do 'ds.WriteXmlSchema("test_ds.xsd");' -
the 
result is given to 'XSD test_ds.xsd /dataset'

This is a column-property of the created typed DataRow - see comments
  
public virtual short nr {
    get {
        // next line (XSD-created) throws NullReferenceException because
        // InitializeFields for the table is never called and so the 
        // column-variables aren't set. Calling it after InitializeClass
        // in the table-constructor makes this work (don't know where it
        // *really* should be called...).
        object ret = this[this.table.nrColumn];

        if ((ret == System.DBNull.Value)) {
            throw new System.Data.StrongTypingException("Cannot get strong
typed value since it is DB null.", null);
        }
        else {
            // next line (XSD-created) throws InvalidCastException
            // the equivalent for strings seems to work
            return ((short)(ret));
            
            // this works
            return Convert.ToInt16(ret);
        }
    }
    set {
        this[this.table.nrColumn] = value;
    }
}

BTW: This would have been much easier with a working debugger. I read
someone is working on it - does anybody know when it is planned to be ready?


Juergen