Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC无法创建数据库_C#_Sql_Asp.net Mvc - Fatal编程技术网

C# ASP.NET MVC无法创建数据库

C# ASP.NET MVC无法创建数据库,c#,sql,asp.net-mvc,C#,Sql,Asp.net Mvc,我是ASP.NETMVC的新手,只是在摆弄它,想看看它是如何工作的。因此,我决定对使用默认的ApplicationDbContext访问的数据库进行查询。通常,如果数据库在此之前没有被实例化,这个查询将确保首先创建数据库,然后进行查询,对吗?好吧,我是这么做的: // This is the default Index action in the Home controller: public ActionResult Index() { var db = new Applicatio

我是ASP.NETMVC的新手,只是在摆弄它,想看看它是如何工作的。因此,我决定对使用默认的
ApplicationDbContext
访问的数据库进行查询。通常,如果数据库在此之前没有被实例化,这个查询将确保首先创建数据库,然后进行查询,对吗?好吧,我是这么做的:

// This is the default Index action in the Home controller:
public ActionResult Index()
{
     var db = new ApplicationDbContext();
     var usersCount = db.Users.Count();

     return View();
}
我知道这个查询毫无意义,但它的唯一目的是生成数据库。问题是它没有。在尝试执行查询时(方法的第二行),我得到一个
System.Data.SqlClient.SqlException

即使在检查
App\u Data
文件夹时,我也发现数据库没有创建。这可能是什么原因?奇怪的是,这在我的台式电脑上有效,但在我的笔记本电脑上却不行。但我确实注意到,当我在连接字符串中放入一个无效的数据源(例如Data Source=)时,我在桌面计算机上得到了相同的异常。因此,可能是LocalDb发生了一些事情导致了这种行为

连接字符串:

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

这是完全例外:

EntityFramework.dll中发生“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理

其他信息:建立与SQL Server的连接时发生网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:52-找不到本地数据库运行时安装。请验证是否正确安装了SQL Server Express,以及是否启用了本地数据库运行时功能。)

如果有人能想出解决这个问题的办法,我将不胜感激


注意:如果我将数据源更改为SQL Server Express服务器名称,我的笔记本电脑上的一切都会正常工作。

听起来好像没有安装您的LocalDb实例。这是一个SQL的“dev attachment”版本,它与某些版本的Visual Studio一起安装,可能已被取消选择,或者如果最初的安装较旧并且经过了升级等,则可能未包括在内

这篇文章给出了一个像样的解释:

基本上,谷歌搜索SqlLocalDb.msi并按照说明操作

我通常更喜欢Express而不是localDb,但这取决于您


还请注意,连接字符串在web.config中被视为MVC内容的“松散”信息。也就是说,它们往往是特定于机器的,因此,如果您正在更改机器(或在团队中工作),您的机器可能具有不同的连接字符串(或web.config的本地副本/部分)。

这是一般的DB连接失败问题。您的连接字符串出错,或者服务器未配置为接受连接,或者防火墙阻止连接,或者未安装SQL。。。等等,我以前也经历过。它没有回答我的问题。每个ASP.NET MVC应用程序都有一个ApplicationDbContext及其附带的模型,因此首先编写代码不是问题@MurrayFoxcroftI投票赞成SQL未安装:否则,如果样板EF启动程序不存在,它不应该创建db吗?OP,尝试在本地主机上设置一个具有该名称的空白数据库,然后运行它。@jdl134679如果这是您的意思,我已经安装了SQL Server Express,我还认为EF应该创建数据库(如果不存在)。该应用程序工作正常,并连接到数据库。数据源是我的SQL Server Express服务器名称。LocalDb是其他内容。。。它是与VisualStudio的某些版本一起安装的,是某种“开发人员附件”。我敢打赌,这正是你所缺少的,尤其是当你看到它如何工作的时候,指向你的快递。(fwiw,我只是把所有的东西都指向我的“真实”实例,并不特别关心LocalDb版本)谢谢你的广泛回答,你的观点很好!我一定会尝试手动安装它!我之所以想使用LocalDb,是因为我想利用ApplicationDbContext、模型以及ASP.NET MVC自动生成的数据库附带的所有优点。您知道如何使自动生成的数据库在我的SQL Server Express中创建,而不是作为LocalDb创建吗?目标数据库应该无关紧要,无论它是在LocalDb中还是在Express实例中,所有EF/DbContext内容都应该是一样的,只需更改连接字符串以指向相应的正确实例,因此,如果我只需将连接字符串中的数据源更改为我的SQL Server Express服务器名称,一切都应该正常?应该是这样的,是的,但这可能看起来像
数据源=MyComputerName\SQLExpress2014
(例如,“服务器”(计算机名)和“实例”(sql实例的名称)。或者,您可以尝试将
localhost
作为服务器部分:
Data Source=localhost\SQLExpress2014