Как создать базу данных в публичной схеме? - PullRequest
0 голосов
/ 24 октября 2018

Извините, заранее спасибо, я новичок в ASP и не понимаю некоторые идеи.Я хочу, чтобы когда мое приложение запускалось, если его не было, мои базы данных создавались.Я работаю с Postgres 9.2 и Entity Framework 6.1.3 и Npgsql.EntityFramework 2.2.7.

Если я удалю строку "modelBuilder.HasDefaultSchema (" public ");"в DBContext Class схема создается как "dbo", но я хочу, чтобы схема создавалась в общедоступной схеме, и, если я оставляю "modelBuilder.HasDefaultSchema (" public ");"Я получаю эту ошибку:

Исключение типа 'Npgsql.NpgsqlException' произошло в EntityFramework.dll ... "

Дополнительная информация: ОШИБКА: 42P06: схема" public "уже существует

что я делаю неправильно?

Это мой код:

часть web.config для подключения к postgres.

<connectionStrings>
<add name="DefaultConnectionString" connectionString="server=localhost;user id=postgres;password=1234;database=Test" providerName="Npgsql" />

<system.data>
<DbProviderFactories>
  <remove invariant="Npgsql" />
  <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
</DbProviderFactories>

Затем я создаю несколько моделей и один класс, наследуемый от dbcontext:

 public class ContextoAplicacion : DbContext
{
    public ContextoAplicacion() :base("name=DefaultConnectionString")
    {
    }       

    public DbSet<Afiliado> afiliados { get; set; }
    public DbSet<Empresa> empresas { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("public");
    }
}

, и, наконец, добавляю следующий код в мой HomeController:

ContextoAplicacion _context;
    public HomeController()
    {
        _context = new ContextoAplicacion();
    }

    public ActionResult Index()
    {
        var data = _context.afiliados.ToList();
        return View();
    }

Заранее спасибо !!! Фернандо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...