Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
Для подключения к базе данных PostgreSQL в ASP.NET MVC вначале добавим в проект пакеты Entity Framework и Npgsql.EntityFramework:
После добавления пакетов надо изменить файл конфигурации web.config. Вначале добавим строку подключения, определив в файле секцию connectionStrings:
<connectionStrings> <add name="BookContext" providerName="Npgsql" connectionString="Server=127.0.0.1;User Id=postgres;Password=password;Port=5432;Database=BookStore;" /> </connectionStrings>
В строке подключения надо указать адрес сервера (параметр Server), id пользователя (по умолчанию postgres), пароль для данного пользователя, номер порта (по умолчанию 5432) и название базы данных.
После добавления пакетов из NuGet внизу файла web.config у нас будет следующая секция entityFramework
:
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" /> </providers> </entityFramework>
В этой секции изменим вторую строку, чтобы в качестве провайдера по умолчанию использовался Npgsql:
<defaultConnectionFactory type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
И затем под секцией entityFramework
добавим следующую секцию:
<system.data> <DbProviderFactories> <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" /> </DbProviderFactories> </system.data>
Это вся необходимая конфигурация для работы с PostgreSQL. Все остальные принципы работы будут теми же. Так же определяем класс контекста и модели:
public class BookContext : DbContext { public DbSet<Book> Books { get; set; } } public class Book { public int Id { get; set; } public string Name { get; set; } public string Author { get; set; } public int Price { get; set; } }
И в методе контроллера добавляем данные в БД и передаем их в представление:
public class HomeController : Controller { BookContext db = new BookContext(); public ActionResult Index() { return View(db.Books.ToList()); } public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Book book) { db.Books.Add(book); db.SaveChanges(); return RedirectToAction("Index"); } }