2

基本モデル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; }
}
4

2 に答える 2