Why on hell don't you keep your ID as integer, and just change the format of the number when you are displaying it ?
Basically you have nothing to win to have a varchar primary key.
So, in the database, primary key as int (1, 2, 3, 4, ...).
When you want to display ID :
string formattedId = id.ToString("000");
Simple, and effective.