代码优先迁移:外键,默认值为空Guid

时间:2016-07-21 16:55:26

标签: sql-server asp.net-mvc entity-framework asp.net-mvc-5

项目详情:

  • ASP.NET 4.5
  • MVC 5
  • EF 6

我正在做一个代码优先的项目,在我的迁移中,我希望为很多东西设置默认值。有一件事涉及两种非常特殊类型的外键来查找表。由于这些查找表必须始终加载已选择的默认值,因此这些查找表中有一个值始终具有Guid.Empty值(00000000-0000-0000-0000-) 000000000000)作为其主键,因此可以很容易地将其识别为默认值。

我试图找到一种方法,如果传递空值,则使用这两个查找表的外键默认为空Guid。 这是添加保险以防万一我错过了代码本身的一个位置,我应该用空的Guid替换空值,但不要。另外,在这个项目中,特别是每周从外部数据库导入一次,我希望能够让所有导入的数据在其外键中具有此默认值,而无需进行额外的工作。让外键将这个空的Guid作为默认值从几个不同的角度来看非常方便。

是的,我使用Guids 作为 Guids,而不是varchar(128)字符串。这些外键是不可为空的uniqueidentifier字段。

就迁移脚本而言,我现在希望手动将默认值添加到字段创建过程中,但我不知道如何将空Guid作为默认值手动插入{{1 }} field ..

我已发布帖子over at dba.stackexchange来处理此问题的MS SQL Server 2008部分。

建议?

1 个答案:

答案 0 :(得分:0)

根据我的其他帖子over at dba.stackexchange,有迹象表明,在迁移脚本中向默认Guid.Empty字段添加默认uniqueidentifier的答案是这样的:

[foreign key] = c.Guid(nullable: false, defaultValue: '00000000-0000-0000-0000-000000000000'));

我还没有对此进行测试,所以如果我出错,请对此帖发表评论。