我将 EntityFramework.Migrations(Beta 1)添加到现有的 Code-First 应用程序中,该应用程序正在经历一些更改(对于迁移功能以及对我从代码优先 API 生成的表进行更多微调)并遇到 GETDATE () 设想。
我已经在 DbContext 中使用自定义初始化程序类来运行 SQL 脚本来设置一些字段并在数据库中创建索引。我的一些 AlterTable 脚本主要用于设置具有默认值的字段(例如将某些日期时间字段设置为 GETDATE())。我真的希望 EntityFramework.Migrations 能够对此有一个答案,因为您可以轻松指定 defaultValue,但到目前为止我还没有看到一个答案。
有任何想法吗?我真的希望执行以下操作会神奇地起作用。 (毕竟这是“神奇的独角兽”)
DateCreated = c.DateTime(nullable: false, defaultValue: DateTime.Now)
不幸的是,从逻辑上讲,它将我的默认值设置为Update-Database
命令已执行。
您可以使用
DateCreated = c.DateTime(nullable: false, defaultValueSql: "GETDATE()")
Usage:
public partial class MyMigration : DbMigration
{
public override void Up()
{
CreateTable("dbo.Users",
c => new
{
Created = c.DateTime(nullable: false, defaultValueSql: "GETDATE()"),
})
.PrimaryKey(t => t.ID);
...
2012年10月10日更新:
根据蒂亚戈在评论中的要求,我添加了一些额外的背景信息。
上面的代码是 EF Migrations 通过运行生成的迁移文件Add-Migration MyMigration
作为包管理器控制台中的命令。生成的代码基于与迁移关联的 DbContext 中的模型。答案建议您修改生成的脚本,以便在创建数据库时添加默认值。
您可以阅读有关实体框架代码优先迁移的更多信息here http://msdn.microsoft.com/en-US/data/jj591621.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)