【问题标题】:Code-first migration: foreign key with default value of empty Guid代码优先迁移:默认值为空 Guid 的外键
【发布时间】:2017-03-19 08:06:21
【问题描述】:

项目详情:

  • ASP.NET 4.5
  • MVC 5
  • EF 6

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

我正在尝试找到一种方法,让使用这两个查找表的外键在传递空值时默认为空 Guid。 这是额外的保险,以防我错过了代码本身的某个地方,我应该用空的 Guid 替换空值,但不要。另外,特别是在这个项目中,每周都会安排从外部数据库导入,我希望能够让所有导入的数据在其外键中都有这个默认值,而无需做额外的工作。从几个不同的角度来看,让外键将此空 Guid 作为默认值会非常方便。

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

在迁移脚本方面,我现在希望手动将默认值添加到字段创建过程中,但我不知道如何手动将空 Guid 作为默认值插入uniqueidentifier字段..

我已经发了一个帖子 over at dba.stackexchange 来处理这个问题的 MS SQL Server 2008 部分。

建议?

【问题讨论】:

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


    【解决方案1】:

    根据我的另一篇帖子over at dba.stackexchange,迹象表明在迁移脚本中将默认Guid.Empty 添加到非空uniqueidentifier 字段的答案如下:

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

    我还没有对此进行测试,所以如果我有错误,请在这篇文章中发表评论。

    【讨论】:

      猜你喜欢
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      相关资源
      最近更新 更多