В настоящее время у меня есть контроллер, который заполняет частичный вид всеми строками из представления базы данных.Как мне вызвать базу данных «выбрать» обработанную процедуру с параметрами из MVC-контроллера?
public ActionResult SearchResults()
{
return PartialView("~/Views/TransactionHistory/_SearchResults.cshtml", db.TRANSACTION_HISTORY.ToList());
}
TRANSACTION_HISTORY
- название модели. а также представление базы данных, из которого я показываю строки. db
- это мой объект контекста базы данных.
Это моя модель класса:
namespace TransactionHistory.Models
{
using System;
using System.Collections.Generic;
public partial class TRANSACTION_HISTORY
{
public int INTERFACE_RECORD_ID { get; set; }
public string COMPANY { get; set; }
public string Status { get; set; }
public string Carrier { get; set; }
public string Service { get; set; }
public string Connote { get; set; }
public string Order_Type { get; set; }
public Nullable<decimal> Volume { get; set; }
public Nullable<decimal> Weight { get; set; }
public string State { get; set; }
public string Post_Code { get; set; }
public string Suburb { get; set; }
public string Zone { get; set; }
public string Book_In { get; set; }
public string Deliver_From { get; set; }
public string Deliver_To { get; set; }
public string Trpt_Special_Instructions { get; set; }
public Nullable<System.DateTime> Date_Created { get; set; }
public Nullable<System.DateTime> From_Date { get; set; }
public Nullable<System.DateTime> To_Date { get; set; }
public string Picklist { get; set; }
}
}
Теперь у меня есть хранимая процедура, которая работает с этой точки зрения, названный TRANSACTION_HISTORY_SEARCH
. Теперь это принимает 2 параметра (FROM_DATE
и TO_DATE
) в предложении where и возвращает то же количество строк, что и представление (это означает, что я не хочу использовать другую модель для хранения строк, возвращаемых хранимой процедурой).
Как я могу использовать метод контроллера ActionResult
, чтобы фактически получить результаты, возвращаемые хранимой процедурой, а не все строки, возвращаемые представлением базы данных?
Я понимаю, что для этого действия мне нужно использовать [HttpPost]
, так как я передам эти параметры для хранимой процедуры из своего представления (записи в текстовом поле).
(1) Вам не нужно POST (это может быть GET, так как ваши не меняющиеся данные). (2) Почему не простой оператор linq '.Where()', например. 'db.TRANSACTION_HISTORY.Where (x => FROM_DATE> = fromDate && x => x.TO_DATE <= toDate);'? –
Спасибо. Просто я работаю над устаревшими базами данных, у которых уже есть хранимые процедуры, и мои работодатели предпочитают, чтобы я их использовал. У меня есть встреча позже, чтобы попытаться убедить их, чтобы я мог использовать LINQ вместо этого. Так что я просто передаю этот запрос LINQ в качестве параметра функции «return PartialView»? – doodles
Да, (где 'fromDate' и' toDate' являются параметрами вашего метода (значения текстовых полей). Но тот факт, что ваш возвращаемый 'PartialView' также предлагает вам использовать ajax. Но если вы хотите сделать это с помощью SP , см. [этот ответ] (http://stackoverflow.com/questions/20901419/how-to-call-stored-procedure-in-entity-framework-6-code-first) для примера –