0

DB2、Entity Framework、および C# 4.0 を正常に連携して使用しています。私の問題は、次のコードでシステム日付を取得しようとするときです...

var query = dbcontext.CreateQuery<TResult>("SELECT current date FROM sysibm.sysdummy1;");
var result = query.AsEnumerable().First();

クエリはDB2で正常に実行されますが、EFは「クエリのシンタックスが無効です。識別子「日付」の近くで...」というメッセージで例外を生成します。

EF は独自の SQL 解析を行っているようですが、DB2 文法などは使用していません。

だから.. EFにSQLを「そのまま」BDに渡すように強制する方法はありますか?

または、DB2 で関数またはその他の変数を使用して、その奇妙な構文 (「現在の日付」、実際には列名の後に他の SQL ダイアレクトのエイリアスが続くように見える) を使用しないようにすることもできます。

ありがとう!

4

1 に答える 1

0

dbContext の名前にもかかわらず、ObjectContext と DbContext を使用していると思います。ObjectContext.CreateQuery は、データベース固有の SQL クエリではなく、ESQL クエリを受け取ります。データベース固有の SQL クエリを送信する場合は、 ExecuteStoreQueryを使用する必要があります

于 2013-03-08T01:26:49.780 に答える