このASP.Netコードがあり、実行中にエラーが発生しました。エラー:.Attachの後にタイムスタンプ列を更新できません
サーバー:メッセージ272、レベル16、状態1、行1:タイムスタンプ 列を更新できません。ここで
は、私がすでに持っているこのテーブルのマッピングです:。。
プロパティ( "バージョン" @)(X => x.Version).HasColumnName IsOptional()HasColumnType(「タイムスタンプ").HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed);
私のテーブルにはバージョンの列があります。
public async Task<IHttpActionResult> Put([FromBody]WordForm wordForm)
{
// SampleSentences -> s
var oldsObj = db.SampleSentences
.Where(w => w.WordFormId == wordForm.WordFormId)
.AsNoTracking()
.ToList();
var newsObj = wordForm.SampleSentences.ToList();
// There is other code here to modify SampleSentences
//
//
// db.WordForms.Attach(wordForm);
// db.Entry(wordForm).State = EntityState.Modified;
wordForm.StatusId = (int)EStatus.Saved;
await db.SaveChangesAsync(User, DateTime.UtcNow);
return Ok(wordForm);
}
Iは、方法中の2つの行にコメントを追加することによって、エラーを修正することができました。しかし、誰かがなぜ私がそれらの行をコメントアウトしないとエラーが発生しているのか説明することができます。 wordFormを添付してModifiedとマークすることはできませんか?
'timestamp'は' rowversion'の廃止予定の名前です。それは時間とは関係ありません –
エンティティのrowversionプロパティに '[TimeStamp]'属性を追加してください –