ICompositeUserType seems to be broken when dynamic-update is true.  It
is missing the NullSafeSet override with bool[] settable as an
argument.  This causes it to break when there parameters that have
been replaced with "is null" elsewhere, and there are no parameter
slots to actually fill.  Here are some potential fixes:

1.  Break ICompositeUserType and add the bool[] settable argument.
2.  Break ICompositeUserType and add a separate method with the bool[]
settable argument.
3.  Make a new interface such as ICompositeUserTypePartialSetter and
add the appropriate method to that.

Although ICompositeUserType works in most cases (obviously), I'd still
argue that it's fundamentally broken since types created with it will
break in surprising ways that the user has no control over.  It
doesn't make sense to me as a user that my type should break suddenly
if dynamic-update is utilized.  I'd propose that #1 is the best
solution from the "future user" perspective.

Thoughts on how to undo this unfortunate brokenness?

         Patrick Earl

Reply via email to