如何在公共架构中创建数据库?

时间:2018-10-24 13:56:20

标签: asp.net-mvc entity-framework

对不起,先谢谢您,我是ASP的新手,我不理解某些想法。 我希望当我的应用程序运行时(如果不存在)创建数据库。 我正在使用Postgres 9.2和Entity Framework 6.1.3和Npgsql.EntityFramework 2.2.7。

如果我删除“ modelBuilder.HasDefaultSchema(“ public”);“在DBContext Class中,将架构创建为“ dbo”,但我希望在公共架构中创建架构,并且我还留下了“ modelBuilder.HasDefaultSchema(“ public”);“ 我收到此错误:

  

EntityFramework.dll中发生了类型为'Npgsql.NpgsqlException'的异常...“

     

其他信息:错误:42P06:“公共”方案已经存在

我做错了什么?

这是我的代码:

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();
    }

提前谢谢!!! 费尔南多

0 个答案:

没有答案