SQL Server 2008 GUID column is all 0's

夙愿已清 提交于 2019-12-12 15:00:21

问题


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.


回答1:


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




回答2:


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.



来源:https://stackoverflow.com/questions/4703115/sql-server-2008-guid-column-is-all-0s

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!