得知Oracle推出正式版Entity Framework元件後,ODP.NET及System.Data.OracleClient就被我打入冷宮,專案需要存取Oracle時幾乎都改用EF處理。

今天遇到新狀況: 有個Oracle資料庫提供了讀取權限的專屬帳號(例如: NRMQRY),實際的資料表在另一個GB Schema中,但有GRANT SELECT權限。在專案新增了ADO.NET Entity Data Model、指定Oracle伺服器名稱、用NRMQRY帳號建好連線(步驟參考),正準備要將資料表加入.edmx時,當場傻眼!

Tables及Views空空如也,什麼也都沒得選。很快想到是因為真正的資料表在GB Schema下,NRMQRY帳號只用來讀資料,本身沒有任何Table及View,所以眼前的任務是要讓NRMQRY可以看到/選到GB下的Table。爬文後學到連線屬性設定有個Filter頁籤,可以指定要顯示哪些Schema所屬性的Table、View... 等等。

加入GB後,在Server Explorer果然可以看到GB Schema的Table了! 高高興興想將GB的Table加進Model... 登楞!! 沒想到Tables及Views依然還是沒有半點東西 orz

再上網爬文,找到有幾個網友在Oracle論壇反應過類似問題(在Server Explorer看得到,但Entity Data Designer沒出現),並推測是11.2.0.3的Issue,目前似乎無解。

最後,我採用的解法是借到另一台Oracle測試環境的GB帳號,連線測試DB建好Model後,再修改連線字串改連原本要連的DB。


Comments

# by JerryH

我使用上OK 在Model Browser Update Model from DataBase 在Table 可以看到別的Schema的Table

Post a comment