C# OracleException:ORA-01918:user';dbo';不存在
尝试使用EntityFramework 6连接到远程oracle db时出现此错误。我见过类似的问题 但我的模式名实际上是小写的(connection==schema,对吗?)-我与Oracle SQL developer进行了检查。我的连接字符串 数据源= (说明= (地址=(协议=TCP)(主机=srvhost)(端口=1521)) (连接数据)= (服务器=专用) (服务名称=cmmd) ) );持久安全信息=True;用户ID=usr;密码=pwd;最大池大小=40;增量池大小=1;decrpool Size=1 所以这个代码没有帮助C# OracleException:ORA-01918:user';dbo';不存在,c#,oracle,entity-framework,C#,Oracle,Entity Framework,尝试使用EntityFramework 6连接到远程oracle db时出现此错误。我见过类似的问题 但我的模式名实际上是小写的(connection==schema,对吗?)-我与Oracle SQL developer进行了检查。我的连接字符串 数据源= (说明= (地址=(协议=TCP)(主机=srvhost)(端口=1521)) (连接数据)= (服务器=专用) (服务名称=cmmd) ) );持久安全信息=True;用户ID=usr;密码=pwd;最大池大小=40;增量池大小=1;de
builder.HasDefaultSchema("ORACLE"); // error ORA-01918: user 'ORACLE' does not exist
builder.HasDefaultSchema("oracle"); // error ORA-01918: user 'oracle' does not exist
编辑1:
公共类OracleDbContext:DbContext
{
public OracleDbContext():base(新OracleConnection(Tools.GetConnectionString()),true)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
MapMonitoringObject(modelBuilder);
}
公共数据库集监视对象{get;set;}
专用void MapMonitoringObject(DbModelBuilder生成器)
{
//builder.HasDefaultSchema(“”);
}
}
事实证明,“模式”意味着用户,因为它存储在dba_用户中。所以我查询了它,选择了一个,添加到HasDefaultSchema中,错误消失了(但现在返回null)。我真的试图找到Oracle术语中“模式”的含义,但它很容易与“数据库”概念混淆 在Oracle模式中=用户。尝试
builder.hasdaultschema(“”)代码>@IvanStoev,现在我得到一个错误“值不能为null。参数名seq owner”。不确定它是否更好。@IvanStoev如果它很重要,我正在尝试从dbOracleDbContext=new OracleDbContext()读取一个值;var query=context.MonitoringObjects.FirstOrDefault()@脾气暴躁的Android用户/模式在Oracle中是同义词。User是您登录时使用的帐户,schema是该用户拥有的对象的集合-基本上是
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("");
}
}