Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework Can';t在不更改数据库名称的情况下,首先使用实体框架代码和MVC 3重新创建SQL Server Express数据库_Entity Framework_Asp.net Mvc 3_Sql Server Express - Fatal编程技术网

Entity framework Can';t在不更改数据库名称的情况下,首先使用实体框架代码和MVC 3重新创建SQL Server Express数据库

Entity framework Can';t在不更改数据库名称的情况下,首先使用实体框架代码和MVC 3重新创建SQL Server Express数据库,entity-framework,asp.net-mvc-3,sql-server-express,Entity Framework,Asp.net Mvc 3,Sql Server Express,当我使用以下连接字符串运行应用程序时,数据库文件已成功创建 <add name="ConnString1" connectionString="Data Source=.\SQLEXPRESS; Database=Database1; Integrated Security=SSPI; AttachDBFilename=|DataDirecto

当我使用以下连接字符串运行应用程序时,数据库文件已成功创建

<add name="ConnString1"
     connectionString="Data Source=.\SQLEXPRESS;
                       Database=Database1;
                       Integrated Security=SSPI;
                       AttachDBFilename=|DataDirectory|aspnetdb.mdf;
                       User Instance=true"
     providerName="System.Data.SqlClient" />

如果删除数据库文件并尝试再次运行应用程序,则无法创建数据库文件,并出现以下内部异常:

基础提供程序在打开时失败。 {“无法打开登录请求的数据库\“Database1\”。登录失败。\Database1\n登录用户“computer\\someuser.”失败。} 如果我在连接字符串中将Database=Database1更改为Database=Database2,则数据库文件将成功创建。这个问题总是反复出现


如何在不更改数据库名称的情况下重新创建数据库文件?

检查以确保目录权限允许您删除mdf文件,并且登录时具有drop schema/table权限目录权限是mdf文件的一个常见问题,因为这些文件具有潜在的敏感性,因此具有较高的安全性《自然》

我可以看出这是一篇比较老的帖子——希望这能帮助处于同样困境的人

首先使用代码,当应用程序第一次运行时,它构建数据库没有问题-它知道它不存在,因为它以前没有构建它。代码首先还获取所用模型的散列值,并将其存储在新数据库中—检查名为EdmMetadata的表—该表存储散列值。它使用散列值来随后检查模型是否已从一个构建更改为另一个构建,以便知道是否要删除数据库并重新构建

第二次到删除数据库后,它会查找丢失的数据库以比较模型哈希值,但找不到它,因为数据库现在已丢失

我的解决方法是在其中一个模型中添加一个无意义的字段(记住在开发之后删除它),以强制重建,而不删除数据库。或者,您可以只修改db哈希值来强制重建


这适用于代码优先的应用程序数据库-对于成员数据库不太确定。

您是否尝试使用除aspnetdb.mdf以外的文件名?你会采取什么行动来删除现有的数据库?当我更改数据库文件的名称时,它会变得更奇怪。如果将名称从aspnetdb.mdf更改为aspnet2.mdf,则会出现错误“数据库的路径\aspnetdb.mdf已存在。请选择其他数据库名称。无法将文件路径\aspnet2.mdf作为数据库DatabaseName附加。其中path是路径,DatabaseName是数据库名称。我正在删除数据库文件,方法是在Visual Studio上右键单击这些文件并将其删除。您找到解决方案了吗?我也有类似的问题。我正在xUnit中执行数据库创建步骤。第一次它运行良好;第二次失败时,
无法打开登录请求的数据库“[my database name]”。登录失败。用户“[my domain user name]”登录失败。
如果重建项目,它将在xUnit中再次工作。但是如果我尝试运行测试而不重建,它会出现上述错误。我没有找到修复方法。我决定停止使用它,直到它的测试版。我有完全相同的问题。我正在使用EF4.1 RTW、VS 2010 SP1、SQL Express(与SQL Engine 2008 SP1一起使用)。。。非常bizare,每次都必须重命名默认数据库名才能生成具有相同文件名的数据库。在解决问题之前,我将使用SQL CE。