在下面的代码中,我使用简单的参数化查询。
它有很多参数,有些可以为NULL,有些为 null 时抱怨 FK。
如何解决此问题以使其具有可选参数但不使用存储过程。
需要明确的是,我想在参数为空时避免尝试更新该字段。
conn.Open();
string sql = @"UPDATE UserProfile
SET FirstName = @p_FirstName
,LastName = @p_LastName
,Gender = @p_Gender
,DateOfBirth = @p_DateOfBirth
,CityId = @p_CityId
,MartialStatusId = @p_MartialStatusId
,ProfileImageId = @p_ProfileImageId
WHERE UserId = @p_UserId";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@p_FirstName", userProfile.FirstName);
cmd.Parameters.AddWithValue("@p_LastName", userProfile.LastName);
cmd.Parameters.AddWithValue("@p_Gender", userProfile.Gender);
cmd.Parameters.AddWithValue("@p_DateOfBirth", userProfile.DateOfBirth);
cmd.Parameters.AddWithValue("@p_CityId", userProfile.CityId);
cmd.Parameters.AddWithValue("@p_MartialStatusId", userProfile.MartialStatusId);
cmd.Parameters.AddWithValue("@p_ProfileImageId", userProfile.ProfileImageId);
cmd.Parameters.AddWithValue("@p_UserId", userProfile.UserId);
cmd.ExecuteNonQuery();
}