2017-02-21 3 views
0

Прежде чем вы скажете, что это ответ на вопрос, я проверил все, что нашел на эту тему, и ничего не работает для меня..net MVC не распознает класс DBContext

Я смотрю учебное пособие по инфраструктуре сущности и выполнению проекта в .net MVC. Я создал следующий класс:

namespace ShowReel.Models 
{ 
public class ShowReelDB : DbContext 
{ 
    public DbSet<Tvshow> Tvshows { get; set; } 
    public DbSet<EpisodeGuide> Episode { get; set; } 
} 
} 

Я должен открыть соединение с локальной базой данных, и на уроке в качестве опции к базе данных, он дает этот класс DbContext.

я получаю только это:

enter image description here

Если я ввести его вручную, то он создает новую пустую базу данных, но предполагается создать базу данных, которая имеет таблицы TVShows и эпизод.

Может ли кто-нибудь сказать мне, в чем проблема? Мне нужно установить что-нибудь еще в Visual Studio?

Прошу прощения, если это глупый вопрос, но я довольно новичок в .net mvc, и я пытаюсь изучить его прямо сейчас.

Вот ConnectionString:

<connectionStrings> 
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-ShowReel-20170214120508.mdf;Initial Catalog=aspnet-ShowReel-20170214120508;Integrated Security=True" providerName="System.Data.SqlClient" /> 

И вот что я имею в рамках объекта в файле web.config:

<entityFramework> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
    <parameters> 
    <parameter value="mssqllocaldb" /> 
    </parameters> 
</defaultConnectionFactory> 
<providers> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 

EDIT: При запуске приложения появляется следующая ошибка: enter image description here

модель, где я называю базы данных это одна:

// GET: TVShows 
    ShowReelDB _db = new ShowReelDB(); 
    public ActionResult TVshow() 
    { 
     var model = _db.Tvshows.ToList(); 


     return View(model); 
    } 

А вот элементы таблицы Tvshow и эпизод:

public class EpisodeGuide 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int Seasons { get; set; } 
    public Array EpisodesPerSeason { get; set; } 
    public DateTime Date { get; set; } 
} 

public class Tvshow 
{ 
    public int Id { get; set; } 
    public string Type { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public double Rating { get; set; } 
    public string Image { get; set; } 
    public int Year { get; set; } 

    public int EpisodeGuideID { get; set; } 
} 

мнение заключается в следующем:

@foreach (var item in Model) 

{

<div class="row"> 
    <div class="col-md-4"> 
     <img src="../Content/Images/@item.Image" style="height:200px; width:300px;" /> 
    </div> 
    <div class="col-md-8"> 
     <h2> @Html.DisplayFor(modelItem => item.Name)</h2> 
     <p> @Html.DisplayFor(modelItem => item.Description)</p> 
     <button class="btn btn-danger btn-lg news" id="@Html.DisplayFor(modalItem => item.Id)">Track</button> 
    </div> 

</div> 
<hr /> 

}

+0

Что произойдет, если вы разрешите ему создать новую пустую базу данных, а затем передать строку подключения этой базы данных в свой DbContext и запустить приложение? Создает ли он необходимые таблицы для вас? – mason

+0

Где находится класс DBCOntext и строка соединения. пожалуйста, поделитесь ими. Также, где вы добавили миграции, это DB First Approach? –

+0

Я поместил строку соединения, и класс DBContext уже был указан .. по крайней мере, я думаю, что это класс, который вы имеете в виду. –

ответ

1

вы должны создать по крайней мере, конструктор и передать имя ConnectionString или ConnectionString к base -constructor-вызов:

public class ShowReelDB :DbContext 
{ 
    public ShowReelDB():base("DefaultConnection") 
    { 
    } 

    public DbSet<Tvshow> Tvshows { get; set; } 
    public DbSet<EpisodeGuide> Episode { get; set; } 
} 

, то вы можете работать либо с миграциями иметь первое приложение кода. просто google для переноса кода сначала.

или, если база данных уже существует, просто работайте с ней как есть. Если у вас возникли проблемы, добавьте Database.SetInitializer<ShowReelDB>(null); в конструктор.

+1

Это рабочий. Я успешно подключил базу данных. Спасибо. У меня еще одна проблема. Когда я запускаю приложение, я получаю эту ошибку, Тип 'ShowReel.Models.Array' в концептуальной стороне не может быть отображен для ввода 'System.Array' на стороне объекта. Оба типа должны быть абстрактными, или оба должны быть конкретными типами. Знаете ли вы, в чем проблема? –

+0

@Spirit_Scarlet Я думаю, это означает, что вы не можете сопоставить тип типа int [] или что-то еще .., чтобы проверить вашу проблему, показать мне ваши модели, которые вы добавляете в контекст –

+0

Я обновил вопрос с помощью моделей, таблиц и вида , –

Смежные вопросы