gpt4 book ai didi

.net-core - 使用时间戳数据类型在 SQL 表中插入记录

转载 作者:行者123 更新时间:2023-12-02 23:42:02 25 4
gpt4 key购买 nike

我有一个带有 TimeStamp 列的 SQL 表。对应的EF实体如下

 public partial class Request : IEntityBase
{
public Request()
{
}

public int RequestID { get; set; }
public Nullable<int> BatchID { get; set; }
public string ClientID { get; set; }
public Nullable<System.DateTime> CreatedDateTime { get; set; }
public Nullable<System.DateTime> ModifiedDateTime { get; set; }
public byte[] VersionStamp { get; set; }
}

VersionStamp 属性的数据类型 timestamp 为 sql

在 C# 中,我创建一个新实体并调用 savechanges()

        var request = new Request()
{
ClientID = "XYZ",
CreatedDateTime = DateTime.Now,
ModifiedDateTime = DateTime.Now,
};
await _DBContext.SaveChangesAsync().ConfigureAwait(false);

但是我收到错误

"Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column."

我没有在代码中的任何地方设置timestamp。我期望 SQL 会自动更新列值

最佳答案

对于 EF Core 2.0(可能还有 EF Core 1.0),您必须在 DbContext/OnModelCreating 方法中指定时间戳/版本属性。

您可以在下面找到“请求”类型的示例规范。

modelBuilder.Entity<Request>(entity =>
{
entity.ToTable("Requests"); // Depends on your table name
entity.HasKey(e => e.RequestID) // If you have a primary key
.HasName("PK_Requests");

entity.Property(e => e.VersionStamp)
.IsConcurrencyToken() // If you want to handle concurrency
.ValueGeneratedOnAddOrUpdate(); // This is important
});

关于.net-core - 使用时间戳数据类型在 SQL 表中插入记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45825877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com