Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有时间戳的实体框架核心问题?无法将实体插入数据库_C#_Entity Framework_Asp.net Core_Ef Core 2.2 - Fatal编程技术网

C# 具有时间戳的实体框架核心问题?无法将实体插入数据库

C# 具有时间戳的实体框架核心问题?无法将实体插入数据库,c#,entity-framework,asp.net-core,ef-core-2.2,C#,Entity Framework,Asp.net Core,Ef Core 2.2,我正在使用EntityFrameworkCore并尝试将一个实体(带有时间戳)插入数据库,但抛出了一个异常 无法将显式值插入时间戳列 我在insert时从EF获得了生成的SQL,并尝试手动运行该代码,但它不起作用 exec sp_executesql N'SET NOCOUNT ON; INSERT INTO [PersonalLookup] ([Description], [IsDeleted], [LookupTypeId], [ProfileId]

我正在使用EntityFrameworkCore并尝试将一个实体(带有时间戳)插入数据库,但抛出了一个异常

无法将显式值插入时间戳列

我在insert时从EF获得了生成的SQL,并尝试手动运行该代码,但它不起作用

exec sp_executesql N'SET NOCOUNT ON;
                     INSERT INTO [PersonalLookup] ([Description], [IsDeleted], [LookupTypeId], [ProfileId], [Timestamp])
                     VALUES (@p0, @p1, @p2, @p3, @p4);',
           N'@p0 nvarchar(4000),@p1 bit,@p2 int,@p3 int,@p4 varbinary(8000)',
           @p0=N'test',@p1=0,@p2=1,@p3=1,@p4=NULL
当我运行下面的SQL代码时,系统返回了关于时间戳的相同错误。这就是EF的问题吗?因为我检查了fluent包含的
IsRowVersion
,并且时间戳在数据库中不可为空


我相信您遇到了这样一个问题,即(合理地)假设SQL Server中的时间戳数据类型是用于记录日期和时间的,就像其他数据库(如Oracle或Postgres)中的数据类型一样,它不是;它用于行版本控制,与日期或时间完全无关。你可能会争辩说它最初的名字不好,ms也会同意——它现在是rowversion的同义词,时间戳将被删除

如果只需要低精度的日期/时间记录,请使用列的
DATETIME
类型;如果需要更高精度的记录,请使用
DATETIME2(7)


请发布表定义我在数据库中添加了时间戳字段,我使用了类型timestamp。我尝试手动添加一条记录,它成功了,但无法使用EF生成的代码,也无法发布您的流畅映射代码,以及您正在使用的本地类实体定义。如果您正在对行进行版本控制,请不要使用时间戳,使用ROWVERSION。显示您的表定义和客户端代码。我还在映射文件中添加了代码,当我调用EF向db添加新实体时,SQL Server没有RowVersion类型,它被更改为Timestamp。因为我检查了包含IsRowVersion的fluent,所以我猜OP希望有一个Timestamp列用于行版本控制。但是,如果我们没有看到“流利”的代码,我们就无法准确地理解它;让我们看看他发布的客户端代码和表定义-我仍然认为这可能是一个摇尾巴的例子