2017-02-21 83 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> 

編輯: 運行該應用程序時,出現以下錯誤: 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; } 
} 

,那麼你可以使用遷移工作,要麼有一個代碼優先的應用程序。只是谷歌的代碼第一次遷移。

或者,如果數據庫已經存在,就照原樣使用它。 如果您有任何問題,請將Database.SetInitializer<ShowReelDB>(null);添加到構造函數中。

+1

它是worker。我成功地連接了數據庫。謝謝。 我還有一個問題。當我運行該應用程序時,出現此錯誤, 概念端的類型'ShowReel.Models.Array'無法映射到對象端的'System.Array'類型。這兩種類型都必須是抽象的,或者兩者都必須是具體類型。 你知道有什麼問題嗎? –

+0

@Spirit_Scarlet我認爲這意味着,你不能映射像int []或類似的類型..檢查你的問題,讓我看看你正在添加到上下文中的模型 –

+0

我用模型,表格和視圖更新了問題。 –