Entity Framework 関数のインポートに面白い問題があります。MS SQL Server 2008 R2 からストアド プロシージャをインポートしていますが、1 つの文字列だけが返されます。ただし、EF がこの戻り値の型を推測するには複雑すぎるため、関数のインポートを定義するときに、関数がスカラーのコレクション (ObjectResult<global::System.String>
生成されたように) を返すように手動で指定する必要がありました。
場合によっては、プロシージャが数字のみを含み、ゼロで始まる文字列を返すことがあります (例: 01234
)。コードでこの結果にアクセスすると、開始ゼロ ( 1234
)がないことがわかりました。
私はいくつかの回避策を知っているので、それは問題ではありません。何が起こっているのか理解したい。
私のワイルドな推測では、SP が複雑すぎてその結果を「予測」できない場合、EF は最初にそのデータの形式によって返されたデータの型を「推測」しようとします。つまり、数値 ( ) を見て、それを整数型 ( , - なんでも)01234
に変換します。次に、 が必要であることを認識し、この数値を に変換しますが、もちろん、これらの変換中にゼロから始まる値は失われます。それは本当ですか、それとももっと良い説明がありますか?int
short
string
string
更新: これは関数インポートのスクリーンショットです: