我希望这是我在我最后做的一个简单的蠢事......
我的数据库设置中有一个表格如下:
column name: widget_guid data type: uniqueidentifier allow nulls: false default value: newid() identity: false row guid: true
创建记录时(通过LINQ to SQL),此字段中的值被格式化为GUID但包含全部0的
我的假设是,当创建一个新记录时,会为该列自动生成一个guid,就像一个自动递增的行id。这不是真的吗?任何帮助将不胜感激。
感谢。
答案 0 :(得分:7)
您需要在GUID列上检查您的属性 - 您需要确保:
Auto Generated Values
设置为True
(因此您基本上告诉Linq-to-SQL数据库将生成该值)
Auto-Sync
应设置为OnInsert
,以便在您调用context.SubmitChanges()
使用这两个设置,您应该得到预期的行为:无需在客户端设置GUID,数据库将生成一个新值并插入它,您将在调用{之后立即获取它{1}}
答案 1 :(得分:1)
在dbml文件中,将字段设置为nullable。 如果将其设置为不可为空,则LINQ不会检查该字段是否具有默认值;它只是认为该字段不可为空,并将发送Guid.Empty导致0。