Consider the following situation:
You have an integer field in your database that has a default value of 10. You are creating a new instance of the type holding the integer field and you are not setting this field (the field is initialized to 0 from the constructor). Later on you are inserting that instance in the database. What you would expect is that the value of 10 is inserted in the column corresponding to the integer field. Now consider the same scenario but you explicitly set the value of 0 to the integer field and then insert it. Normally you would expect that the default value would be omitted and a 0 will be inserted.
Here is where the actual problem begins. Currently OpenAccess does not have means to tell the difference between a zero that has been set by the constructor and a 0 that has been explicitly set. That is why we only support default values for fields that are nullable. This way you will still be able to set 0 to an integer field and the null would mean that the field was not initialized.
the Telerik team
OpenAccess ORM Q2'12 Now Available! Get your hands on all the new stuff