2

MVC でダウンロード可能なトラックを作成しようとしています。これは私が持っているコードです:

public ActionResult DownloadTrack(int albumid, int trackid)
    {
        var track = (from x in database.songs
                     where x.ALBUM_ID == albumid &&
                     x.TRACK_ID == trackid
                     select x).First();
        Byte[] Song = track.MP3;
        return File(Song, ".mp3", "test");
    }

コードがByte[]ソングに到着すると、track.MP3 = nullと表示されますが、データベースにクエリを実行すると、いっぱいであると表示されます...

4

1 に答える 1

0

First演算子は、使用されるプロトタイプに応じて、シーケンスの最初の要素または述語に一致するシーケンスの最初の要素を返します。

ところで: 引数がnullの場合、ArgumentNullExceptionがスローされます。ソース シーケンスが空の場合、または述語が true を返さない場合は、InvalidOperationException がスローされます。

そのため、おそらく where 句で使用される基準は結果を生成しません。

次のことを提案します。

a) MS SQL Server を使用している場合は、SQL プロファイラーを使用して、正しい SQL が DB (LINQ から生成された SQL) に適用されていることを確認します。

  • SQL Server Management Studio を開く
  • ツールに移動 – SQL Server プロファイラー
  • 開いた [Trace Properties] ダイアログでデフォルトに同意し、[Run] をクリックします</li>
  • 上記の LINQ を実行し、SQL プロファイラーで SQL ステートメントを調査します (SQL をコピーしてプロファイラーから直接 DB に貼り付け、実行して目的の結果が得られるかどうかを確認し、そうでない場合は LINQ を修正します)。

b) FirstOrDefault の使用を提案し、返された null を処理する

于 2013-02-14T13:17:53.963 に答える