.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类。
我只得到这样的:
如果我手工输入,然后它会创建一个新的空数据库,但它应该是创建具有表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>
从那里我调用数据库的模型是这一个:
// 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 />
}
你必须创建至少一个构造函数和传递的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);
添加到构造函数中。
它是worker。我成功地连接了数据库。谢谢。 我还有一个问题。当我运行该应用程序时,出现此错误, 概念端的类型'ShowReel.Models.Array'无法映射到对象端的'System.Array'类型。这两种类型都必须是抽象的,或者两者都必须是具体类型。 你知道有什么问题吗? –
@Spirit_Scarlet我认为这意味着,你不能映射像int []或类似的类型..检查你的问题,让我看看你正在添加到上下文中的模型 –
我用模型,表格和视图更新了问题。 –
如果允许它创建一个新的空数据库,然后将该数据库的连接字符串传递给DbContext并运行该应用程序,会发生什么情况?它为你创造了必要的桌子吗? – mason
DBCOntext类和连接字符串在哪里?请分享这些。另外你在哪里添加了这个DB First Approach? –
我把连接字符串,和DBContext类已经给出..至少我认为这是你的意思是类。 –