First, this is not a bug; it's due to the difference between dbnull ie unknown value and null ie a reference pointing nowhere. It's compounded by the fact that Microsoft themselves seem to be poor at explaining it, judging by some of the opaque and unhelpful responses on Connect and elsewhere.
There are a number of solutions to this issue, depending on what you are trying to achieve. If you are using databinding, then the binding mechanism mostly handles this transparently for you; if you are hitting the dataset directly in code the designer will have built Isxxxnull / setxxxnull methods for you to check the value before you use it. Finally you can change the datatype to system.object, or you can overtype the NullValue in the designer to enter another value if you wish, as long as that value is valid for the datatype - eg 0 or -1 for an int.