我在C#中从我的ASP.net应用程序查询SQL Server数据库。以下是我的数据库架构的一部分。
我编写了以下表达式来从数据库中获取数据。
var query = db.DBMovies.Where(ent => ent.Id == Id).Join(db.DBCategories,
r => r.Id,
l => l.CategoryId,
(r, l) => new
{
Id = r.Id,
MovieName = r.Name,
Year = r.Year,
Category = r.Genre,
PosterURL = r.PosterURL,
});
foreach (var movie in query)
{
//something
}
在ent.Id == Id
部分中,右侧的Id
指的是参数值。我提到了this教程,但是当我执行它时,执行不会进入foreach循环。我在foreach循环中创建了一个断点,注意到它没有命中。有人可以帮我找出问题吗?如果可能的话,请建议一种快速观察lambda表达式返回值的方法。
谢谢。
修改
我改变了查询,因为我第一次犯了一个大错,但即使是现在我也没有看到任何成功。
var query = db.DBMovieToCategory.Where(ent => ent.CategoryId == Id).Join(db.DBMovies,
r => r.MovieId,
l => l.Id,
(r, l) => new
{
Id = l.Id,
MovieName = l.Name,
Year = l.Year,
Category = l.Genre,
PosterURL = l.PosterURL,
});
答案 0 :(得分:1)
通过将电影ID与类别ID匹配,您似乎正在尝试将电影加入到类别中。由于ID是独立分配的,因此只有在您拥有电影和具有相同ID的类别时才会获得记录。
不记录任何记录将是您永远不会进入foreach
循环的原因。
我看不到您的模型中定义的关系,因此DBMovies,DBCategories和DBMoviesToCategories不会知道"他们彼此相关。