Reputation: 7176
I'm hoping this is a simple goof I did on my end ...
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.
Upvotes: 4
Views: 2971
Reputation: 107696
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.
Upvotes: 1
Reputation: 754268
You need to check your properties on the GUID column - what you need to make sure is:
Auto Generated Values
is set to True
(so you basically tell Linq-to-SQL that the database will generate the value)
Auto-Sync
should be set to OnInsert
so that your C# object will be populated with the new value after you've called context.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()
Upvotes: 8