0

Entity Framework 関数のインポートに面白い問題があります。MS SQL Server 2008 R2 からストアド プロシージャをインポートしていますが、1 つの文字列だけが返されます。ただし、EF がこの戻り値の型を推測するには複雑すぎるため、関数のインポートを定義するときに、関数がスカラーのコレクション (ObjectResult<global::System.String>生成されたように) を返すように手動で指定する必要がありました。

場合によっては、プロシージャが数字のみを含み、ゼロで始まる文字列を返すことがあります (例: 01234)。コードでこの結果にアクセスすると、開始ゼロ ( 1234)がないことがわかりました。

私はいくつかの回避策を知っているので、それは問題ではありません。何が起こっているのか理解したい。

私のワイルドな推測では、SP が複雑すぎてその結果を「予測」できない場合、EF は最初にそのデータの形式によって返されたデータの型を「推測」しようとします。つまり、数値 ( ) を見て、それを整数型 ( , - なんでも)01234に変換します。次に、 が必要であることを認識し、この数値を に変換しますが、もちろん、これらの変換中にゼロから始まる値は失われます。それは本当ですか、それとももっと良い説明がありますか?intshortstringstring

更新: これは関数インポートのスクリーンショットです:

関数のインポート

4

0 に答える 0