Correct.
I'm afraid I don't understand what you mean here?
If zero is a valid id value for your database, then you should make to tell Aurelius so, using IdUnsavedValue, as discusses in a few topics:
IdUnsavedValue