Эй, ребята, я нахожу немного трудным подготовить предложение where в следующем методе обновления. Я создаю метод обновления, здесь я делаю это правильно?но все еще я сбит с толку тем, как мне узнать, какое свойство использовать в предложении where
или какой-либо лучший подход для создания универсального метода обновления?я буду очень благодарен
РЕДАКТИРОВАТЬ
public bool UpdateData(object Entity, ref String error)
{
Type objectType = Entity.GetType();
PropertyInfo[] properties = objectType.GetProperties();
error = "";
string column = null;
int i = 0;
SqlConnection conn = OpenConnection();
SqlCommand sqlcommand=null;
foreach (PropertyInfo info in properties)
{
if (i == 0)
{
i++;
continue;
}
column += (i >= 0 && i < properties.Length - 1) ? string.Format(@"{0}=@{0},", info.Name) : string.Format(@"{0}=@{0}",info.Name);
i++;
}
try
{
string sqlQuery = string.Format(@"update {0} set {1}
where {2}='{3}'", objectType.Name, column,1,1);//see here m not getting how to prepare this where clause
sqlcommand = new SqlCommand(sqlQuery, conn);
i = 0;
foreach (PropertyInfo info in properties)
{
if (i == 0)
{
i++;
continue;
}
sqlcommand.Parameters.AddWithValue(string.Format("@{0}", info.Name), info.GetValue(Entity, null));
}
sqlcommand.ExecuteNonQuery();
sqlcommand = null;
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
CloseConnection(conn);
}
}
РЕДАКТИРОВАТЬ
см. в коде выше есть условие if if (i == 0)
in foreach loop
я не хочу делать это, потому что здесь я предполагаю, что мои объекты property i.e employee_id
находятся на 1-м индексе в массиве PropertyInfo[]
.. что если кто-то в этом классе создаст свойства класса, такие как public string employee_name{get,set} public string employee_add{get,set} public string employee_id{get,set}
В случае, если foreach loop
пропустит employee_name
вместо 'employee_id', потому что я использовал if(i=0)
, я хочу способ пропустить только значение идентификатора, например employee_id
в foreach loop in my update function
независимо от его индекса в массиве propertyInfo
.... я хорошо объяснил?