基本モデルUser
と 2 つの追加モデルUserCreateModel
がありUserEditModel
ます。UserCreateModel
正常に動作し、ユーザーが作成されますが、ユーザーを編集しようとするとエラーが発生します。
有効な DateTime プロパティがデータベースに既に配置されているため、彼が datetime に基づいて行動する理由がわかりません。私がやりたかったのは、Name
プロパティを更新することだけです。ここで何が間違っていますか?
エラー
datetime2 データ型を datetime データ型に変換すると、範囲外の値になりました。ステートメントは終了されました。
コントローラ
public HttpResponseMessage PutUser(int id, UserEditModel user)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
if (id != user.Id)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
db.Entry(user).State = EntityState.Modified;
try
{
db.SaveChanges(); // Exception here, all validation passed with success
}
catch (DbUpdateConcurrencyException ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
return Request.CreateResponse(HttpStatusCode.OK);
}
モデル
public class User
{
public int Id { get; set; }
public virtual DateTime CreatedDateTime { get; set; }
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual string PasswordSalt { get; set; }
public virtual string AccessToken { get; set; }
public virtual string Name { get; set; }
}
public class UserEditModel : User
{
[Required]
public override string Name { get; set; }
}