2015-11-09 2 views
1

Я пытаюсь перечислить элементы из моей базы данных в мое представление, но я возвращаюсь обратно.Запрос базы данных, но получение нулевой обратно

Я знаю, что соединение должно работать в определенной степени, потому что в моей базе данных таблицы не существовали, но как только я запускал свою программу, она создавала таблицы. Однако, когда я добавляю содержимое в свою таблицу, мой взгляд по-прежнему возвращает NULL.

Кроме того, еще не дотрагивались до Обзорного стола, просто беспокоясь о том, чтобы работать в ресторанах.

Restaurant.cs

namespace OdeToFood.Models 
{ 
    public class Restaurant 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string City { get; set; } 
     public string Country { get; set; } 
     public ICollection<RestaurantReview> Reviews { get; set; } 
    } 
} 

OdeToFood.cs
namespace OdeToFood.Models 
{ 
    public class OdeToFoodDb : DbContext 
    { 
     public DbSet<Restaurant> Restaurants { get; set; } 
     public DbSet<RestaurantReview> Reviews { get; set; } 
    } 
} 

Контроллер

OdeToFoodDb _db = new OdeToFoodDb(); 

public ActionResult Index() 
{ 
    var model = _db.Restaurants.ToList(); 

    return View(); 
} 

Index.cshtml

@model IEnumerable<OdeToFood.Models.Restaurant> 

@{ 
    ViewBag.Title = "Home Page"; 
} 

@{ 
    if (Model != null) 
    { 
     foreach (var item in Model) 
     { 
      <div> 
       <h4>@item.Name</h4> 
       <div>@item.City, @item.Country</div> 
       <hr /> 
      </div> 
     } 
    } 
    else 
    { 
     <h1>Null</h1> 
    } 
} 

ответ

2

Вы никогда не отправляете модель на вид. Передайте его в качестве аргумента:

OdeToFoodDb _db = new OdeToFoodDb(); 

public ActionResult Index() 
{ 
    var model = _db.Restaurants.ToList(); 

    return View(model); 
} 

Кроме того, как правило, не рекомендуется создавать контексты базы данных в общей области. Держите контекст как можно ближе к тому, где он используется, насколько это возможно, и только расширяйте его, когда вам действительно нужно. Что-то вроде этого: контексты

public ActionResult Index() 
{ 
    using (var _db = new OdeToFoodDb()) 
    { 
     var model = _db.Restaurants.ToList(); 
     return View(model); 
    } 
} 

баз данных/соединений в общем объеме это только проблемы, если не обращать пристальное внимание на то, что вы делаете. По мере усложнения кода становится более вероятным, что другие методы попытаются использовать его, и в то время он может находиться в неизвестном состоянии.

3

Вам необходимо перейти на модель обратно к виду.

OdeToFoodDb _db = new OdeToFoodDb(); 

public ActionResult Index() 
{ 
    var model = _db.Restaurants.ToList(); 

    return View(model); 
} 
Смежные вопросы