Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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#MVC应用程序中创建SQL Server Express数据库?_C#_Entity Framework_Sql Server Express - Fatal编程技术网

如何在运行时在C#MVC应用程序中创建SQL Server Express数据库?

如何在运行时在C#MVC应用程序中创建SQL Server Express数据库?,c#,entity-framework,sql-server-express,C#,Entity Framework,Sql Server Express,我正试图在MVC3 web应用程序中使用C#中的Entity Framework 5实现这一点: // Local DB connection var dbId = String.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0}.mdf;Database=Tests;Integrated Security=True;Pooling=False;Connect Timeout=30;User Instance=True", _dbPath

我正试图在MVC3 web应用程序中使用C#中的Entity Framework 5实现这一点:

// Local DB connection
var dbId = String.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0}.mdf;Database=Tests;Integrated Security=True;Pooling=False;Connect Timeout=30;User Instance=True", _dbPath);
_connection = new SqlConnection(dbId);

Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());

// Reset database if the file exists
var ctx = new MyContext(_connection);
ctx.Database.CreateIfNotExists();
ctx.Database.Initialize(true);
ctx.SaveChanges();

return _connection;
//本地数据库连接
var dbId=String.Format(@“数据源=。\SQLEXPRESS;AttachDbFilename={0}.mdf;数据库=测试;集成安全性=真;池=假;连接超时=30;用户实例=真”,dbPath);
_连接=新的SqlConnection(dbId);
SetInitializer(新的DropCreateDatabaseAlways());
//如果文件存在,请重置数据库
var ctx=新的MyContext(_连接);
ctx.Database.CreateIfNotExists();
ctx.Database.Initialize(true);
ctx.SaveChanges();
返回连接;
这适用于我的测试,但在运行web应用程序时不起作用。当我运行web应用程序时,我得到:

运行时发生与网络相关或特定于实例的错误 正在建立与SQL Server的连接。找不到服务器,或者 无法访问。验证实例名称是否正确,以及 SQL Server配置为允许远程连接。(提供程序:SQL) 网络接口,错误:26-定位服务器/实例时出错 (指定)

我在其他一些问题中看到,有人建议从连接字符串中删除“用户实例”,但这会导致:

在数据库“master”中创建数据库的权限被拒绝

让我在这里完全明确我的目标:我试图让web应用程序按需创建数据库实例(
sqlexpress

提前创建数据库实例不是一个解决方案

我很困惑,为什么当应用程序工作者是访问和创建数据库的人时,需要某种特殊权限

你怎么能做到这一点


使用sqlite这是一个简单的操作,我开始觉得使用实体框架(以及SQL Server Express)是错误的,我应该使用fluent nhibernate和sqlite

本文建议这是“ASP.Net V4.0”应用程序池“ApplicationPoolIdentity”的默认帐户的文件权限问题,并建议将其改为使用“网络服务”。

您是否使用IIS托管MVC应用程序?如果是,应用程序池使用哪个帐户。这可能是此帐户的权限问题。是。在IIS的本地副本上,我正在使用“ASP.NET v4.0”工作程序;显然,这还没有接近生产,因为它已经坏了,但是我们有一个单独的工作人员负责prod上的应用程序。不幸的是,这似乎没有帮助。更改为使用“NetworkService”标识,运行了iisreset,但仍然看到:“在数据库“master”中拒绝创建数据库权限。”我收回了前面的评论;重新启动机器后,这确实修复了它!iisreset本身是不够的;可能还涉及到重新启动sql server,但完全重新启动解决了这一问题。