在我的HomeController Index操作中,我想要两个SQL查询:
var model = db.Task.Where(n => (n.UserId == UserID) && (n.Completed == false) && (n.Due < dateTime));
return View(model);
var map = db.Events.Where(n => (n.UserId == UserID) && (n.Start < dateTime));
return View(map);
在上面的代码中,第二个Var带有绿色下划线。如何执行这两个查询并将结果传递到主页?
非常感谢。
答案 0 :(得分:1)
您无法从函数返回并期望返回后执行代码。
确保您的视图中包含单一模型,其中包含所有所需信息。
例如:
var model = db.Task.Where(n => (n.UserId == UserID) && (n.Completed == false) && (n.Due < dateTime));
model.Map = db.Events.Where(n => (n.UserId == UserID) && (n.Start < dateTime));
return View(model);
除非您在模型上定义了Map
成员,否则此代码将无法编译。
虽然不是两次DB调用,但更好的方法是在一次调用中填充所有数据。
答案 1 :(得分:0)
两个选项,要么创建一个类来容纳两个变量:
public class IndexModel {
IEnumerable<ModelA> Model { get; set; }
IEnumerable<MapMode> Map { get; set; }
}
在你的行动中:
return View(new IndexModel{ Model = model, Map = map });
或者将其中一项放入视图数据包中。
ViewBag.Map = map;
return View(model);