#asp.net-mvc #postgresql
#asp.net-mvc #postgresql
Вопрос:
Пожалуйста, простите меня, если этот вопрос слишком глуп, но я только начал изучать ASP в течение нескольких дней… Итак, я решил создать какое-нибудь простое веб-приложение, которое будет обрабатывать данные из базы данных (Postgres). Для подключения к базе данных я использую NpgsqlConnection
class. Я видел несколько руководств по подключению к БД, т.Е. Здесь, Но почти везде они используют MSSQL, и нигде я не могу найти решения для моего случая. Итак, я хотел бы иметь модель, которая будет содержать все извлеченные данные внутри, я смогу выполнить итерацию следующим образом:
<% foreach (var item in Model)
{ %>
<tr>
<td><%: item.Title %></td>
<td><%: String.Format("{0:g}", item.ReleaseDate) %></td>
<td><%: item.Genre %></td>
<td><%: item.Rating %></td>
<td><%: String.Format("{0:F}", item.Price) %></td>
</tr>
<% } %>
Итак, что я должен сделать для достижения этой цели?
Я думал создать класс
public class Person{
int id;
string Name;
string Surname;
...
}
затем создайте общий список типов Person
и после извлечения данных добавьте все выбранные данные в мой список. А затем каким-то образом передать этот список в качестве модели.
Я думаю, что есть лучший способ сделать это правильно. Есть предложения?
Ответ №1:
Нет, вы в значительной степени на верном пути.
Основное отличие, которое вы видите из руководств, заключается в том, что большинство из них, вероятно, используют entity Framework для заполнения моделей. Поскольку вы используете postgres … я бы не рекомендовал пытаться заставить entity framework работать с ним (я слышал, что это кошмар). Вы можете использовать другой Orm, если хотите, или просто сделать это с помощью команды подключения и reader, как вы, вероятно, привыкли.
Способ, которым я бы это сделал, — создать модель домена, которая выглядит так же, как модель базы данных (похоже на то, что вы сделали с Person
)
Оттуда вы должны заполнить ее в контроллере.
public class PersonController : Controller
{
//this method will map to the Person/Index route by default
public ActionResult Index()
{
//use your npgsqlconnection right now to populate whatever object you'd like
List<Person> people = PopulateFromPostgres();
//here were returning the index view with the model being a list of person
return View(people)
}
}
Тогда, по вашему мнению (Views/ Person/Index.cshtml я верю в этот пример)
@model List<Person>
<table>
@foreach (var item in Model)
{
<tr>
<td>@item.Title</td>
<td>@String.Format("{0:g}", item.ReleaseDate)</td>
<td>@item.Genre</td>
<td>@item.Rating </td>
<td>string.Format("{0:F}", item.Price)</td>
</tr>
}
</table>
Дайте мне знать, если есть более конкретная область, которую вы здесь не понимаете.
Комментарии:
1. Спасибо за ваш ответ. Я думаю, что я правильно вас понял ;).