Мне надоело писать следующий код:
/* Commenting out irrelevant parts
public string MiddleName;
public void Save(){
SqlCommand = new SqlCommand();
// blah blah...boring INSERT statement with params etc go here. */
if(MiddleName==null){
myCmd.Parameters.Add("@MiddleName", DBNull.Value);
}
else{
myCmd.Parameters.Add("@MiddleName", MiddleName);
}
/*
// more boring code to save to DB.
}*/
Итак, я написал это:
public static object DBNullValueorStringIfNotNull(string value)
{
object o;
if (value == null)
{
o = DBNull.Value;
}
else
{
o = value;
}
return o;
}
// which would be called like:
myCmd.Parameters.Add("@MiddleName", DBNullValueorStringIfNotNull(MiddleName));
Если это хороший способ сделать это, то что бы вы предложили в качестве имени метода? DBNullValueorStringIfNotNull является немного подробным и запутанным.
Я также открываю способы полностью решить эту проблему. Я ЛЮБЛЮ для этого:
myCmd.Parameters.Add("@MiddleName", MiddleName==null ? DBNull.Value : MiddleName);
но это не сработает, потому что "Оператор" не может применяться к операндам типа "string" и "System.DBNull".
У меня есть С# 3.5 и SQL Server 2005 в моем распоряжении, если это имеет значение.