2012-02-14 32 views
5

我有兩個表格,其最大長度爲30時有一個相同名稱的列。當我在linq中查詢它時,這兩個表格的連接實際生成的SQL(相當巨大)使用「AS」關鍵字來區分它們,稱它們爲{long_column_name} 1和{long_column_name} 2。當使用Entity Framwork 4.1 for Oracle時,長列名稱會產生錯誤

發生這種情況時,別名的長度實際上是31,這會導致ORA-00972錯誤:標識符對於別名太長了!

這顯然是SQL生成過程中的某種錯誤。

任何人都知道解決方法? ,因爲我不能重命名列,我現在要做的是創建兩個視圖沒有這些列,但這不是一個理想的解決方案。

+0

您可以發佈生成有問題的查詢的linq語句的示例嗎?我想知道的是,如果長列名在選擇,聯接條款等 – 2012-02-14 16:42:25

+0

有趣,如果這是來自MS。他們應該執行colname ||的substr NUM。 – tbone 2012-02-14 20:11:20

+0

您是否嘗試過Oracle的odp.net w/entity framework支持?我沒有,但看到這裏:http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html – tbone 2012-02-14 20:19:55

回答

0

在我看來,你幾乎得到了我要建議的解決方案。創建一個包含列的視圖,而不是創建一個忽略列的視圖,而是使用視圖將這些列重新命名爲更短的視圖。

希望有所幫助。

+0

感謝您的幫助。 – 2012-02-15 14:40:27

+0

我最終通過簡化查詢來完成它。這個查詢是合理的,我認爲你的解決方案也應該起作用。 – 2012-02-15 15:03:57

0

Here是具有匹配問題的Oracle數據提供程序論壇。鏈接中確認是他們正在處理的內部錯誤。現在,他們說重新命名錶中的列,這對於大多數情況來說不太理想。我會嘗試映射到重命名爲較短的列的視圖

相關問題