对不起,先谢谢您,我是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();
}
提前谢谢!!! 费尔南多