私はインターネットで検索し、それについての同様の記事を発見しました。しかし、私にとって解決策はありませんでした。選択されたストアドプロシージャまたは関数は列を返しません
私のストアドプロシージャに問題があります。 Visual Studioでプロジェクトに追加すると、次のメッセージが表示されます。
選択されたストアドプロシージャまたは関数は列を返しません。
私は手順にSET FMTONLY OFF
を追加することで問題を解決できます(here)。これで何も変わりません。それでもEFに従って列は返されません。
私のストアドプロシージャは、次のようになります。
ALTER PROCEDURE [dbo].[spImportData]
@someParameter
AS
BEGIN
SET NOCOUNT ON;
-- Some insertion
INSERT INTO dbo.SomeTable ([SomeField])
SELECT @someParameter
SELECT CAST(SCOPE_IDENTITY() AS BIGINT) AS ImportId
END
同じ結果一時テーブル使用した場合:実行するとき
DECLARE @importId BIGINT = SELECT CAST(SCOPE_IDENTITY() AS BIGINT)
SELECT @importId
:テーブル変数と
CREATE TABLE #temp (ImportId BIGINT)
INSERT INTO #temp (ImportId)
SELECT CAST(SCOPE_IDENTITY() AS BIGINT)
SELECT ImportId FROM #temp
DROP TABLE #temp
まだ列をSQL Serverで直接プロシージャ、私は希望の値を得ています。
私には何が欠けていますか?私はSET FMTONLY OFF
がトリックを行うだろうと思ったが、この場合は何も変わらず、私の手続きはまだ "列を返さない"。
編集1
私は彼のコメントで示唆するもの@NEERてみました。 SELECT
をSELECT 1 AS ImportId
に変更しました。しかし、私はまだ同じメッセージを受けています。
変更 'SELECT CAST(BIGINT AS SCOPE_IDENTITYを())ImportId' AS ImportId'は、あなたのエンティティを更新として' 1を選択します。 – NEER
@NEER私はそれを試しましたが、EFはまだ列を認識しません。 –
これも試してもらえますか? 'SELECT 1 AS Foo From OneOfYourTable' – NEER