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。