1

レガシークライアントをサポートし、LinqクエリからADOデータセットを作成する必要があります。問題は、リフレクションでは取得できない特定の列情報(varcharの長さ、小数の精度など)を取得する方法です。

たとえば、フィールド名varchar(80)のテーブルCustomerがあります。

linqからエンティティクエリにデータをフェッチすると、次のようになります。

var data = (from c in ctx.Customers select c.Name).ToList()

maxSize列を取得できずdata[i].Name、adodatasetでエラーが発生します。

私はすでに簡単な解決策を持っています:

  1. プロパティ参照によってObjectContextから列メタデータを抽出するコード
  2. Queryableから式を解析し、出力プロパティをedm列にリンクする単純なコード。

しかし、ネストされた複数のgroupby / unions/joinsなどを含む複雑なクエリの解析には多くの問題があります。

誰か他の方法を知っていますか(おそらくマテリアライゼーションシェイパーなどを使用しています)?

4

1 に答える 1

0

Joseph KowalskiによるEFProviderWrappersのおかげで、私は同様のプロバイダーを作成し、codeplexで公開しました。

于 2012-09-07T21:38:54.833 に答える