StrataFrame Forum

BOM-generated bug with FieldChangingEvents and Nullable Fields

http://forum.strataframe.net/Topic23093.aspx

By Kirk M Sherhart - 5/13/2009

If a field has a Null Type of "Return and Set Alternate on Null..." and the Property Changing Events (either single or multiple) are generated, then the following code is generated.



public System.String FIELD1

{

get

{

object loValue;

loValue = this.CurrentRow["FIELD1"];

if (loValue == DBNull.Value)

{

return "";

}

else

{

return (System.String)loValue;

}

}

set

{

MyBOFieldChangingEventArgs e = new MyBOFieldChangingEventArgs(MyBOFieldNames.FIELD1, value);

this.OnFieldPropertyChanging(this, e);

if (value != "") <=== w00t*** Note: e is not used!!!! ***

{

this.CurrentRow["FIELD1"] = value;

}

else

{

this.CurrentRow["FIELD1"] = DBNull.Value;

}

}

}





The e.FieldValue is not used after returning from the event!!!! The e.FieldValue should be cast/set to value (as it is if the field is not nullable.)
By Charles R Hankey - 5/14/2009

Do you get a different result if you return and test for string.empty instead of "" ?
By Kirk M Sherhart - 5/14/2009

The result is the same if the null-replacement value is "" or String.Empty



The problem is that e.FieldValue is not used after the return from OnFieldPropertyChanging (like it is for a non-nullable field). If OnFieldPropertyChanging changes the value in e.FieldValue, it is not used to set the field value.
By Charles R Hankey - 5/14/2009

What are you using for an alternate return value in the bo mapper?
By Kirk M Sherhart - 2/3/2010

Just tried to see if the problem was fixed under 1.7. No change. Too bad.
By Trent L. Taylor - 2/3/2010

Apparently this missed the list.  Changing it right now so it is sure to be in the next update.
By Trent L. Taylor - 2/3/2010

Fixed.  It will be in the next update.  If you want this assembly, let me know and I will send it to you.  We hope to post a minor update pretty quickly, so either way is good with me. Smile
By Kirk M Sherhart - 2/4/2010

Thank you! I can wait for the next release.