LP1*_*P13 4 entity-framework-core .net-core coreclr
我有一个带有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; }
}
Run Code Online (Sandbox Code Playgroud)
该VersionStamp属性的数据类型timestamp为sql
在C#中我创建一个新实体并调用savechanges()
var request = new Request()
{
ClientID = "XYZ",
CreatedDateTime = DateTime.Now,
ModifiedDateTime = DateTime.Now,
};
await _DBContext.SaveChangesAsync().ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)
但我得到错误
"无法在时间戳列中插入显式值.将INSERT与列列表一起使用以排除时间戳列,或将DEFAULT插入时间戳列."
我没有timestamp在代码中设置任何地方.我原以为SQL会自动更新列值
对于EF Core 2.0(以及可能的EF Core 1.0),您必须在DbContext/OnModelCreating mehod中指定timestamp/version属性.
您可以在下面找到"请求"类型的示例规范.
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
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
925 次 |
| 最近记录: |