2012-02-14 20 views
5

最大長30の同名の列を持つ2つの表があります。 linqでこれらの2つの表の結合を問い合せると、実際に生成されたSQL(非常に巨大)は、それらを区別するために "AS"キーワードを使用して、{long_column_name} 1と{long_column_name} 2を呼び出します。Oracle用のEntity Framwork 4.1を使用する場合、長い列名でエラーが発生する

この場合、エイリアス名は実際には31の長さになり、ORA-00972エラーが発生します。識別子が別名には長すぎます!

これは明らかにSQL生成プロセスのバグです。

誰にも回避策がありますか? 私は列の名前を変更できないので、私は今これらの列なしで2つのビューを作成することですが、これは理想的な解決策ではありません。

+0

問題のあるクエリを生成しているlinqステートメントの例を投稿できますか?私が思っているのは、長いカラム名がselect、join句などにある場合です。 –

+0

これはMSからのものなら面白いです。 colnameのsubstrを実行する必要があります。 num。 – tbone

+0

は、オラクルのodp.netとエンティティフレームワークのサポートを試しましたか?私はそうではありませんが、こちらをご覧ください:http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html – tbone

答えて

0

私のように、あなたはほとんど私が提案しようとしていた解決策を持っています。列を省略したビューを作成する代わりに、列を含むビューを作成しますが、ビューを使用してこれらの列の名前を変更します。

希望に役立ちます。

+0

助けてくれてありがとう。 –

+0

私はそれをやって、クエリを簡素化しました。このクエリでは合理的でしたが、私はあなたのソリューションもうまくいくと思います。 –

0

Hereは、一致する質問を持つOracle Data Providerフォーラムです。リンクでは、彼らが取り組んでいる内部のバグであることが確認されています。今のところ、彼らはテーブルの列の名前を変更すると言っていますが、これはほとんどのシナリオで望ましくないものです。短い列に名前を変更したビューにマップしようとしました

関連する問題