2017-08-22 2 views
2

私はTimeStampカラムのSQLテーブルを持っています。対応するEFエンティティはtimestampデータ型のSQLテーブルにレコードを挿入する

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を持っている私は新しいエンティティを作成し、SaveChangesメソッドを(呼び出すC#では、SQL

です)

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

しかし、私はエラー

を取得

"タイムスタンプ列に明示的な値を挿入できません。INSERT にタイムスタンプ列を除外する列リストを追加するか、 DEFAULTをタイムスタンプ列に挿入します。

コードのどこにでもtimestampを設定していません。私はSQLが列の値を自動的に更新することを期待していました

答えて

4

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 
}); 
関連する問題