在我的MVC应用中,我想获取用户正在为其创建评论的当前餐厅的名称。
我创建了一个简单的Linq查询,以使用查询字符串中通过restaurantId发送的信息将其提取出来:
控制器
[HttpGet]
public ActionResult Create(int restaurantId)
{
var restuarantName = from r in _db.Restaurant
where r.Id == restaurantId
select r.Name;
ViewBag.RestaurantName = restuarantName;
return View();
}
但是,我得到的结果是:
"New Review for SELECT [EXTENT1].[NAME] AS [NAME] FROM [DBO].[RESTAURANT] AS [EXTENT1] WHERE [EXTENT1].[ID] = @P__LINQ__0".
在视图中提供以下内容:
@ViewBag.RestaurantName
我在LinqPad中检查了查询,并成功返回了一个名称,为什么它似乎没有执行?
餐厅模型
public class Restaurant
{
public int Id { get; set; }
public string Name { get; set; }
public string City { get; set; }
public string Country { get; set; }
public virtual ICollection<Reviews> Reviews { get; set; }
}
数据库上下文
public DbSet<Restaurant> Restaurant { get; set; }
答案 0 :(得分:2)
restuarantName
的类型为IQueryable
,这意味着查询尚未<物>化到数据中,为了对数据库运行该查询,请调用:
var restuarantName = _db.Restaurant.SingleOrDefault(x => x.id = restaurantId);
答案 1 :(得分:0)
尝试
ViewBag.RestaurantName = restuarantName.ToList();
答案 2 :(得分:0)
您正在将查询设置为视图,未在执行查询。 尝试类似
var restuarantName = _db.Restaurant(x => x.id = restaurantId).SingleOrDefault();
假设您要查找一个值