0

I have this error trying to connect to remote oracle db with EntityFramework 6. I've seen similar question Oracle.ManagedDataAccess.EntityFramework - ORA-01918: user 'dbo' does not exist but it that my schema name is really lowercase (connection == schema, right?) - I checked it with Oracle SQL developer. My connection string

DATA SOURCE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = srvhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cmmd) ) );PERSIST SECURITY INFO=True;USER ID=usr;PASSWORD=pwd;Max Pool Size=40;Incr Pool Size=1;Decr Pool Size=1;

so this code does not help

builder.HasDefaultSchema("ORACLE"); // error ORA-01918: user 'ORACLE' does not exist

builder.HasDefaultSchema("oracle"); // error ORA-01918: user 'oracle' does not exist

Oracle SQL developer Edit 1:

public class OracleDbContext : DbContext
{
    public OracleDbContext() : base(new OracleConnection(Tools.GetConnectionString()), true)
    {

    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        MapMonitoringObject(modelBuilder);
    }

    public DbSet<MonitoringObject> MonitoringObjects { get; set; }

    private void MapMonitoringObject (DbModelBuilder builder)
    {
        //builder.HasDefaultSchema("");
    }

}
Alexander Kozachenko
  • 885
  • 2
  • 13
  • 26

1 Answers1

1

As it turns out, "schema" means user, because stored in dba_users. So I queried it, picked the one, added in HasDefaultSchema and error is gone (but returned null for now). I really tried to find what means "schema" in Oracle terms, but it's so easily confused with "database" concept.

Alexander Kozachenko
  • 885
  • 2
  • 13
  • 26