Если ваша хранимая процедура возвращает те же имена столбцов, которые вы используете в своем классе POCO, вы можете изменить свой код на:
public ActionResult Index()
{
var context = new PetaPoco.Database("DataContext");
return View(context.Fetch<BiddersViewModel>("exec udsp_Bidders_SelectAll"));
}
, и ваше представление должно работать так, как ожидается, потому что вы, вероятно, имеетепредставление строгого типа с определенным типом модели как Ienumerable<BiddersViewModel>
.
Не беспокойтесь, если ваша хранимая процедура возвращает больше столбцов, которые вы определили в своем классе модели представления POCO.Просто убедитесь, что у тех, кого вы не отобразили, есть правильные имена (или используйте ColumnAttribute
, чтобы сопоставить их со свойствами).
Относительно Fetch
/ Query
разница в том, что если вы используете Fetch
вы будете читать записи в действии вашего контроллера, но если вы используете Query
и передадите это в ваше представление, вы будете читать записи в представлении.Обычно лучше подготовить данные в действии контроллера и использовать эти данные в представлении.Для поддержки этого паттерна вы должны либо использовать Fetch
или Query<T>().ToList()
в своем действии контроллера.
Но если вам нужно по каким-то причинам манипулировать этими результатами в представлении (если это невозможно сделать каким-либо другим способом)way) затем используйте Query
и передайте фактический перечислитель для просмотра, который затем будет манипулировать результатами и читать их соответственно.