モデル
public class Users
{
public int Id { get; set; }
public string UserName { get; set; }
public string DisplayName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public DateTime? LastLoginDate { get; set; }
public string LastLoginIP { get; set; }
}
このように、DBでユーザーの表示名のみを更新したい
repository.Update(new User{ DisplayName = "display name" });
SQLクエリを作成するにはどうすればよいですか? クエリを動的に作成する必要がありますか? それとも別の方法ですか?
次のコードを使用してユーザーを更新します。
public int Update(Users user)
{
SqlCommand command = GetCommand("UPDATE Users SET UserName=@UserName, DisplayName=@DisplayName, Email=@Email, Password=@Password");
command.Parameters.AddWithValue("@UserName", user.UserName, null);
command.Parameters.AddWithValue("@DisplayName", user.DisplayName, null);
command.Parameters.AddWithValue("@Email", user.Email, null);
command.Parameters.AddWithValue("@LastLoginDate", user.LastLoginDate, null);
command.Parameters.AddWithValue("@LastLoginIP", user.LastLoginIP, null);
command.Parameters.AddWithValue("@Password", user.Password, null);
return SafeExecuteNonQuery(command);
}
AddWithValueExtension
public static SqlParameter AddWithValue(this SqlParameterCollection target, string parameterName, object value, object nullValue)
{
if (value == null)
{
return target.AddWithValue(parameterName, nullValue ?? DBNull.Value);
}
return target.AddWithValue(parameterName, value);
}
ただし、上記のコードはすべてのフィールドを null 値で更新します (user displayName を除く)。値がnullの場合、フィールドを更新したくありません。説明できることを願っています。
事前に感謝します...