我想运行种子方法来创建/更新表(配置值)中的值。初始运行成功并创建了“TestSeed”记录。但更新正在抛出以下错误。代码第一种方法的错误 - 无法更新时间戳列
这是我种的方法,
context.SystemValues.AddOrUpdate(
sv => sv.Name,
new SystemValue { Name = "TESTSEED", Description = "Seed test1.", CreatedBy = "Sys", CreatedOn = DateTime.UtcNow, Value = "TESTSEED", ModifiedBy = "Sys", ModifiedOn = DateTime.UtcNow }
);
context.SaveChanges();
而且AutomaticMigrationsEnabled =假
系统值类,
public partial class SystemValue
{
public int SystemValueId { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public string Description { get; set; }
public System.DateTime CreatedOn { get; set; }
public string CreatedBy { get; set; }
public System.DateTime ModifiedOn { get; set; }
public string ModifiedBy { get; set; }
public byte[] Version { get; set; }
}
错误在更新的数据库,
PM >更新 - 数据库 指定'-Verbose'标志来查看应用于目标数据库的SQL语句。 没有待处理的显式迁移。 运行种子法。 System.Data.Entity.Infrastructure.DbUpdateException:更新条目时发生错误。详情请参阅内部例外。 ---> System.Data.Entity.Core.UpdateException:更新条目时发生错误。详情请参阅内部例外。 ---> System.Data.SqlClient.SqlException:无法更新时间戳列。 在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection,动作
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction) 在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔callerHasConnectionLock,布尔asyncClose) 在System.Data。 SqlClient.TdsParser.TryRun(runBehavior runBehavior,SqlCommand的cmdHandler,SqlDataReader的数据流,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,布尔& dataReady)
为什么此更新不起作用?我错过了什么吗?
编辑
一件事我注意到的是,RowVersion字段不为空。我可以从代码优先使它为空吗?