我正在使用,并且正在修改我的模型以将时间戳字段添加到我的表中。我正在尝试在第二次迁移中添加时间戳字段。下面是我的代码的示例
public class User {
public int UserId { get; set; }
public string UserName { get; set; }
public byte[] TimeStamp { get; set; }
}
public class UserModelConfiguration: EntityTypeConfiguration<User> {
public UserModelConfiguration() {
Property(p => p.UserName).IsRequired().HasMaxLength(250);
Property(p => p.TimeStamp).IsRowVersion();
}
}生成的迁移如下所示
public override void Up()
{
AddColumn("Users", "TimeStamp", c => c.Binary(nullable: false, fixedLength: true, timestamp: true, storeType: "rowversion"));
}执行更新-数据库命令时,会收到一条错误消息:“不能在数据类型时间戳的列上创建默认值。表‘用户’,列‘时间戳’。无法创建约束。”我将所有数据从表中移出,但这并没有解决问题。
如何将时间戳字段添加到这个迁移集?
发布于 2012-03-07 14:48:04
使用nullable:true。时间戳列将在列规范中包含null,但无论如何它都将被填充。
发布于 2012-03-07 13:22:48
我们今天刚刚遇到了这个问题。我们的解决方案是删除表,然后通过迁移重新创建它。2单独的迁移脚本。
如果您想要保留数据,显然并不理想,但是,在我们的例子中,这不是一个问题。
听到一个不那么疯狂的解决方案会很有趣。
HTH。
发布于 2012-04-01 21:06:07
FYI这个错误是在EF5.0 beta 2中修复的。以前版本最好的解决方法就是这里已经提到的:指定可空的:true。感谢您的报道!
https://stackoverflow.com/questions/9597766
复制相似问题