3

エンティティクエリへのリンクがあります(EF 4.3)

var query = from item in db.TableTest
            select item.VAL;

これはこのSQLステートメントに変換されます

SELECT
"Extent1"."VAL" AS "VAL"
FROM "dbo"."TEST_TABLE" "Extent1"

データベースはOracleです。

クエリを実行すると、データテーブルが存在しないというメッセージが表示されます。問題は("dbo")の部分です。それを削除してこのクエリを直接実行した場合(LINQではなくoracleconnectionなどを介して)

SELECT
"Extent1"."VAL" AS "VAL"
FROM "TEST_TABLE" "Extent1"

その後、すべてが大丈夫です。値を取り戻します。

Oracle互換のSQLを出力するようにLinqToEntitiesに指示するにはどうすればよいですか?

4

2 に答える 2

2

エンティティモデルがあると仮定して、DDL生成テンプレートを正しく設定していることを確認してください。

また、dboデータベーススキーマ名のを削除して、実際のDBと一致させることもできます。

ここに画像の説明を入力してください

于 2012-08-10T15:16:08.527 に答える
1

尋ねた直後、私は自分の問題を解決する方法を見つけました

私はこのPOCOクラスを持っていました

[Table("TEST_TABLE")]
public class MyEntity
{
    [Key, Column("VAL")]
    public string key_valye { get; set; }
}

生成されたSQLは「dbo」を挿入しました。テーブル属性をに変更したとき

 [Table("TEST_TABLE", Schema="ATT")]

これにより、代わりに「ATT」。「TEST_TABLE」が生成されました。これは実際には正しいSQLでした。

于 2012-08-10T15:24:23.147 に答える