Я использую официальный драйвер Oracle SQL и Entity Framework для чтения базы данных. Но при чтении базы данных он префикс имени таблицы с "dbo".:
SELECT
*
FROM "dbo"."Woningen"
Без "дбо". префикс кода работает нормально, поскольку он вызывает ошибку "таблица или представление не существует". Вероятно, это связано с тем, что пользователь не является "dbo", поэтому он не имеет доступа к этой схеме. Это код Entity Framework, который я использую:
[Table("Woningen")]
public class Woningen
Я пробовал обновлять пакет Oracle nuget, но потом он приходит с ошибкой "Строка подключения не является корректной". Так что, вероятно, она имеет ту же ошибку, что и раньше, она просто потерпела неудачу раньше. Это формат connectionString, который я использовал:
<add name="DefaultConnection"
providerName="Oracle.ManagedDataAccess.Client"
connectionString="USER ID=testUser;PASSWORD=password;
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=serverUrl)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=Database)));"/>
Я вижу три возможных решения этой проблемы, но понятия не имею, как их реализовать:
Обратите внимание, что текущий код уже работает в производстве, поэтому текущая версия должна быть в порядке. База данных и ее пользователь являются новыми, поэтому проблема может заключаться в том, как они создаются.
Вы можете указать схему, используемую Entity Framework. Увидеть ниже
Если вы используете Entity Framework 6+, вы можете использовать следующие
public class Context : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Set a default schema for ALL tables
modelBuilder.HasDefaultSchema("YourSchemaName");
}
}
Если вы хотите установить схему на определенную таблицу...
[Table("Woningen"), Schema = "YourSchemaName")]
public class Woningen { }
Если вы используете EF5
public class Context : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Unfortunately you have to specify each table you want to set a schema for...
modelBuilder.Entity<Woningen>().ToTable("Woningen", "YourSchemaName");
}
}
modelBuilder.HasDefaultSchema(“your schema name”);