在我的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; }
}
DB上下文
public DbSet<Restaurant> Restaurant { get; set; }
发布于 2018-10-08 03:50:41
restuarantName
类型为IQueryable
,意思是查询尚未物化为数据,为了对数据库运行查询,请调用:
var restuarantName = _db.Restaurant.SingleOrDefault(x => x.id = restaurantId);
发布于 2018-10-08 03:47:09
试一试
ViewBag.RestaurantName = restuarantName.ToList();
发布于 2018-10-08 03:47:14
如果将查询设置为视图,则不会执行查询。试着做些像
var restuarantName = _db.Restaurant(x => x.id = restaurantId).SingleOrDefault();
假设您正在寻找单个值
https://stackoverflow.com/questions/52701509
复制