string.Empty is not the same as Nothing (or null). By default the properties you mention are null and not string.Empty. Hence removing the explicit assignations to string.Empty resolved the problem.
Deciding which database technology to use for your system can be a complex task and, as such, there are no right or wrong answers to your question. Much depends on the requirements you...