我正在构建一个ASP。. NET核心搜索Web API,它应该返回具有相同搜索QR码的视频列表(QR码是外键)。
这是视频模型:
public class Video
{
[Key]
public int VideoId { get; set; }
public string Exercice { get; set; }
public string Titre { get; set; }
public int Sexe { get; set; }
public int Categorie { get; set; }
public int Level { get; set; }
public string FilePath { get; set; }
public DateTime DateUpload { get; set; } = DateTime.Now;
[ForeignKey ("Machine")]
public string Machine_Qr { get; set; }
public Machine machine { get; set; }
public Coache Coache { get; set; }
}
机器类:
public class Machine
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Machine_Qr { get; set; }
public string Machine_Name { get; set; }
public string ImagePath { get; set; }
public DateTime InsertedOn = DateTime.Now;
public List<Video> Videos { get; set; }
}
这是搜索控制器
[HttpGet("{Qr}")]
public async Task<IEnumerable<Video>> Search(string qr)
{
IEnumerable<Video> query = _context.videos.Where(e => e.Machine_Qr == qr);
if ((query != null))
return query;
else
return Enumerable.Empty<Video>().ToList();
}
我测试了一下,每次都得到一个空列表。
为了使用实体框架执行Linq to SQL,您需要像这样更新您的查询
[HttpGet("{Qr}")]
public async Task<IEnumerable<Video>> Search(string qr)
{
IEnumerable<Video> query = await _context.videos.Where(e => e.Machine_Qr == qr).ToListAsync();
return query;
}
通过添加。tolistasync(),它将执行查询转换为SQL并返回结果