.net MVC不识别DBContext类

问题描述:

在你说这是一个回答问题之前,我检查了我在这个主题上找到的所有东西,但没有任何适用于我。.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> 

编辑: 运行该应用程序时,出现以下错误: 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类已经给出..至少我认为这是你的意思是类。 –

你必须创建至少一个构造函数和传递的ConnectionString的名称或ConnectionString,以base -constructor呼叫:

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

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

,那么你可以使用迁移工作,要么有一个代码优先的应用程序。只是谷歌的代码第一次迁移。

或者,如果数据库已经存在,就照原样使用它。 如果您有任何问题,请将Database.SetInitializer<ShowReelDB>(null);添加到构造函数中。

+1

它是worker。我成功地连接了数据库。谢谢。 我还有一个问题。当我运行该应用程序时,出现此错误, 概念端的类型'ShowReel.Models.Array'无法映射到对象端的'System.Array'类型。这两种类型都必须是抽象的,或者两者都必须是具体类型。 你知道有什么问题吗? –

+0

@Spirit_Scarlet我认为这意味着,你不能映射像int []或类似的类型..检查你的问题,让我看看你正在添加到上下文中的模型 –

+0

我用模型,表格和视图更新了问题。 –