我正在使用Official Oracle SQL和Entity Framework驅動程序來讀取數據庫。但是,讀取數據庫時,它的前綴表名與「DBO」:使用實體框架避免Oracle架構名稱
SELECT
*
FROM "dbo"."Woningen"
沒有「DBO」。代碼的前綴工作正常,它會導致錯誤「表或視圖不存在」。這可能是因爲用戶不是'dbo',所以它無法訪問該架構。這是我使用實體框架代碼:
[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)));"/>
我可以看到這個問題,有三種可能的解決方案,但不知道如何實現它們:
- 操縱實體框架從查詢排除架構名稱
- 給我的用戶訪問模式
- 更新驅動程序和修復ConnectionString的格式,如果有人知道的格式是如何改變..
請注意,當前代碼已在生產中工作,所以當前版本應該沒問題。數據庫和它的用戶是新的,所以問題可能在於它們是如何創建的。
您可以指定在EF中使用適當的模式,如果有幫助? EF6 +'modelBuilder.HasDefaultSchema(「您的模式名稱」);' –
@DanielShillcock謝謝,這是解決方案,使用用戶名作爲模式名稱。如果你把它做成一個答案,我會接受它。 – MrFox