1

现在对我来说是凌晨 1:30,所以如果这里有任何令人困惑的地方,我很抱歉.. 这在我的脑海中似乎是有道理的.. :-)

我一直在使用 SQLMetal 为我的数据库表生成数据上下文......

我使用了命令:

sqlmetal.exe /server:dbsvr\sqlexpress /database:"TestDB" /user:sa /password:password /namespace:DB_Data /context:DBDataContext /code:DBDataContext.cs /map:DB.map

这一切都很好,我可以在我的桌子上做所有的 CRUD 功能,等等......几乎......

我有一个“标题”表,其中有一个“唯一标识符”类型的字段......当我插入新记录时,我希望数据库将值分配给记录,并使用新的 guid 更新我的标题表记录从数据库。目前,我添加到表中的任何新记录的 id guid 字段都为零。所以当我尝试添加第二条记录时,它会因重复键而失败。

在寻找答案时,我遇到了这篇文章: SQL Server 2008 GUID column is all 0's

它提到在 dbml 中分别将“自动生成的值”和“自动同步”设置为“True”和“OnInsert”。

我的问题是,我没有 dbml 文件,因为它不是在我运行 SQLMetal 命令时创建的。我改用 .map 文件生成参数。我意识到有一个“/dbml”标志,但我不知道该使用哪一个。

我应该使用 dbml 文件而不是地图文件吗?

或者有没有办法在代码中,当我创建一个新的标头记录变量时,我可以说如下内容来告诉系统使用数据库生成的 ID 值并更新我的记录变量....:recHdr.Id .AutoGeneratedVales = True; recHdr.Id.AutoSync = OnInsert;

非常感谢...

4

0 回答 0