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[] Song 它说 track.MP3 = null 但是当我查询我的数据库时它说它已满......

4

1 回答 1

0

First运算符返回序列的第一个元素或与谓词匹配的序列的第一个元素,具体取决于使用的原型。

顺便说一句: 如果任何参数为空,则会引发 ArgumentNullException。如果源序列为空或谓词从不返回 true,则会引发 InvalidOperationException。

因此,where 子句中使用的标准很可能不会产生任何结果。

建议如下:

a) 如果您使用的是 MS SQL Server,请使用 SQL Profiler 并确保将正确的 SQL 应用于 DB(从 LINQ 生成的 SQL)

  • 打开 SQL Server 管理工作室
  • 转到工具 - SQL Server Profiler
  • 同意打开的跟踪属性对话框中的默认值,单击“运行”</li>
  • 运行上面提到的 LINQ 并检查 SQL Profiler 中的 SQL 语句(您可以将分析器中的 SQL 直接复制并粘贴到 DB 中,运行并查看它是否产生所需的结果,如果没有,请修改 LINQ)。

b) 建议使用FirstOrDefault,并处理返回的null

于 2013-02-14T13:17:53.963 回答