Кажется, это проблема
var user = myDC.DC.ExecuteQuery("exec ecs.udpUserAttributeDetails {0}, {1}", sqlCommand, userId).SingleOrDefault();
В вашем коде вы передаете объект sqlCommand в качестве первых параметров и userId в качестве второго параметра.
Контекст данных Метод ExecuteQuery имеет 2 перегрузки
ExecuteQuery<TResult>(String, Object[])
ExecuteQuery(Type, String, Object[])
Вы, похоже, используете Перегрузку 1 - т.е. ExecuteQuery<TResult>(String, Object[])
, но в этом случае вам необходимо указать тип возвращаемого объекта
например: -
var customers = db.ExecuteQuery<Customer>(@"SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers WHERE City = {0}", "London");
ПРИМЕЧАНИЕ: db.ExecuteQuery <Customer>
в приведенном выше примере - это то, что я имею в виду.
Я думаю, что это может быть причиной ошибки, поскольку компилятор вместо этого отображает ваш запрос на перегрузку 2, которая не возвращает никаких значений, но принимает 3 параметра, что приводит к вашей ошибке A query parameter cannot be of type 'System.Data.SqlClient.SqlCommand
.