SQL Server 2008 GUID column is all 0's
I'm hoping this is a simple goof I did on my en开发者_JS百科d ...
I have a table in my database set up like so:
column name: widget_guid data type: uniqueidentifier allow nulls: false default value: newid() identity: false row guid: true
When records are created (via LINQ to SQL) that the values in this field are formatted as a GUID but contain all 0's
My assumption was that when a new record was created, that a guid would be autogenerated for that column, much like an auto-incrementing row id. Is this not true? Any help would be greatly appreciated.
Thanks.
You need to check your properties on the GUID column - what you need to make sure is:
Auto Generated Values
is set toTrue
(so you basically tell Linq-to-SQL that the database will generate the value)Auto-Sync
should be set toOnInsert
so that your C# object will be populated with the new value after you've calledcontext.SubmitChanges()
With these two settings, you should get the expected behavior: no need to set the GUID on the client side, the database will generate a new value and insert it, and you'll get it back right after the call to .SubmitChanges()
In your dbml file, set the field to nullable. If it is set to not-nullable, LINQ does not go as far as checking that the field has a default; it simply believes the field non-nullable and will send Guid.Empty causing the 0's.
精彩评论