开发者

SQL Server 2008 GUID column is all 0's

开发者 https://www.devze.com 2023-02-04 05:46 出处:网络
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:

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 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()

SQL Server 2008 GUID column is all 0's


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消