Hi,
If it's not too late - and for future reference for others... The answer to use NewGuid( ) is a good one. I'll take the answer a little further. When you default the DB column to (newid( )), you are basically doing the same thing that you would do in the following code:
Employee myObj = new Employee( );
myObj.EmployeeID = Guid.NewGuid( );
DataRepository.EmployeeProvider.Save(myObj);
The "problem" you are experiencing is that after the first line, myObj.EmployeeID is set to a real (but blank) Guid... Which is actually Guid.Empty - which is actually a good thing. But because it is not NULL, the default value in the DB doesn't actually get used.
If you want a DB-side answer to this problem (but again it doesn't matter since the above code does the same thing), you would add an insert (and maybe update) trigger that checks the value of EmployeeID and then resets it to newid( ). I wont ellaborate on how to create such a trigger, because my buddy Google knows how to create a simple trigger that replaces a field that's coming in (before it actually gets saved to the row)...
Cheers
Clynton
-------------------------------------
Member of the .NetTiers team