У меня есть хранимая процедура, которая принимает уникальный идентификатор в качестве параметра.
Он должен работать так (я этого не писал):
SqlCommand command = new SqlCommand("[CheckActivation]", Conn)
{
CommandType = CommandType.StoredProcedure
};
command.Parameters.AddWithValue("@key", key);
return (bool)command.ExecuteScalar();
где ключ - строка, но это не так. Я всегда получаю исключение «Указанный актер недействителен».
Поэтому я переписал это на:
Guid guid = new Guid(key);
using (var command = Conn.CreateCommand())
{
command.CommandText = "[CheckActivation]";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@key", SqlDbType.UniqueIdentifier);
command.Parameters["@key"].Value = guid;
return (bool)command.ExecuteScalar();
}
guid - это объект Guid со значением correnct, но я все еще получаю то же исключение.
Что здесь происходит не так?
Решение: проблема была приведена в операторе return. Sp возвращает значение типа int, которое не может быть преобразовано в bool:
return ((int) command.ExecuteScalar () == 1);