@{
Page.Title = "Book a showing";
var db = Database.Open("calcinema");
var f = db.Query("SELECT * FROM Film WHERE FilmID = 1;").ToList();
}
<html>
<p> @f.Title </p>
</html>
被突出显示为错误的行是
@ f.Title
如果您无法从代码中看到我想要做什么 - 基本上有一个名为Film的数据库表,每个电影都有一个ID . 我只是想用FilmID = 1来显示电影的 Headers (这个电影存在,当我在webmatrix的数据库部分运行查询时,我得到了正确的结果) . 我做错了什么?
3 回答
如果将
Query
方法与数据库帮助程序一起使用,则会获得一组动态对象作为回报 . 如果只想返回一行,则应使用QuerySingle
方法,而不是返回单个动态对象:您可以在此处阅读有关数据库帮助程序方法的更多信息:http://www.asp.net/web-pages/tutorials/data/5-working-with-data,我已在此处详细介绍了这些方法及其返回类型:http://www.mikesdotnetting.com/Article/214/How-To-Check-If-A-Query-Returns-Data-In-ASP.NET-Web-Pages
f
将成为某些动态类型匿名类型的列表 . 它不会有Title
属性 . 您要么考虑在cshtml中嵌入Page.Title
,要么迭代列表中的每个结果并为每个元素写一个<p />
.您也可以使用
QuerySingle
Single来获取电影(我根据您根据ID查询的事实选择单一,并且查询应该返回一个结果):我同意以下答案 . 您可以使用foreach输出列表中的所有 Headers . 但是目前您正在尝试选择列表中不存在的属性 .
这将起作用,否则尝试使用
我个人会使用SingleOrDefault,因为它通常“更安全” .