Запрос, возвращающий запрос, а не результат - PullRequest
0 голосов
/ 08 октября 2018

В моем приложении 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, и он успешно возвращает имя, почему это не кажетсябудет выполняться?

Модель Restuarant

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; }

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Вы устанавливаете запрос к представлению, запрос не выполняется.попробуйте что-то вроде

var restuarantName = _db.Restaurant(x => x.id = restaurantId).SingleOrDefault();

Предполагая, что вы ищете одно значение

0 голосов
/ 08 октября 2018

restuarantName имеет тип IQueryable, что означает, что запрос еще не материализовал в данные, чтобы запустить его для базы данных, вызовите:

var restuarantName = _db.Restaurant.SingleOrDefault(x => x.id = restaurantId);

0 голосов
/ 08 октября 2018

Попробуйте

ViewBag.RestaurantName = restuarantName.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...