我有一个带有两个guid字段的(遗留)表。第二个guid字段可以为null,但我想使用linq to sql在insert上自动生成非重写guid。我将自动同步设置为“OnInsert”,将Auto Generate Value设置为True。但由于某种原因,当记录放入数据库时,它不会自动生成/插入guid值。我想我可以循环生成guid,直到找到一个不在数据库中然后添加它的内容,但这似乎并不优雅。我确信使用linq to sql有更好的方法。有关如何做到这一点的任何建议?是不是因为可以为空的属性设置为T?
之前我遇到过类似的问题,但是学会了如何更改ID字段的属性,以便linq to sql可以添加guid How do i prevent Linq from adding a GUID so that SQL server can do it?我不能在这里使用该解决方案,因为这种情况下的guid是可以为空且不是PK,所以我不能像在链接问题中那样改变属性。
答案 0 :(得分:2)
我想我可以循环生成guid,直到找到一个不在DB中的内容......
如果使用Guid.NewGuid()
生成GUID,则永远不应生成两个相同的GUID。如果发生这种情况,你将获得绝对不可思议的胜算。可以安全地假设Guid.NewGuid()
将返回此行星上没有人曾经生成过的GUID。