LINQ и EF, вероятно, излишни, если все, что вы пытаетесь сделать, это вызвать сохраненный процесс.
Я использую Enterprise Library, но ADO.NET также будет работать нормально.
См. этот урок .
Кратко (бесстыдно скопировано и вставлено из ссылочной статьи):
SqlConnection conn = null;
SqlDataReader rdr = null;
// typically obtained from user
// input, but we take a short cut
string custId = "FURIB";
Console.WriteLine("\nCustomer Order History:\n");
// create and open a connection object
conn = new SqlConnection("Server=(local);DataBase=Northwind; Integrated Security=SSPI");
conn.Open();
// 1. create a command object identifying
// the stored procedure
SqlCommand cmd = new SqlCommand(
"CustOrderHist", conn);
// 2. set the command object so it knows
// to execute a stored procedure
cmd.CommandType = CommandType.StoredProcedure;
// 3. add parameter to command, which
// will be passed to the stored procedure
cmd.Parameters.Add(
new SqlParameter("@CustomerID", custId));
// execute the command
rdr = cmd.ExecuteReader();
// iterate through results, printing each to console
while (rdr.Read())
{
Console.WriteLine(
"Product: {0,-35} Total: {1,2}",
rdr["ProductName"],
rdr["Total"]);
}
}
Обновление
Я пропустил ту часть, где вы сказали, что делаете это в вашем контроллере.
Нет, это не правильный способ сделать это.
Ваш контроллер должен быть действительно вовлечен только в построение оркестрированного представления. Создайте отдельную библиотеку классов, которая называется «Уровень доступа к данным» или что-то менее общее, и создайте класс, который будет обрабатывать вызовы сохраненных процедур, создание объектов из результатов и т. Д. Существует много мнений о том, как это следует обрабатывать, но, возможно, Наиболее распространенным является:
View
|
Controller
|
Business Logic
|
Data Access Layer
|--- SQL (Stored procs)
-Tables
-Views
-etc.
|--- Alternate data sources
-Web services
-Text/XML files
-blah blah blah.
MSDN имеет достойный учебник по теме.