无法创建文件“ * .mdf”,因为它已经存在

时间:2018-12-11 10:15:37

标签: c# sql-server entity-framework code-first

我正在 Winforms 应用程序中使用实体框架。该应用程序连接到 MSSQLServer ,一切正常。然后,我分离数据库并将.mdf文件复制到app文件夹,并更改连接字符串以使用本地.mdf文件,但一切正常。

问题是,当我将应用程序与数据库一起复制到另一台PC时,EF突然尝试重新创建数据库并引发此错误:

  

无法创建文件'Path \ MyDatabaseName.mdf',因为该文件已经存在。   更改文件路径或文件名,然后重试该操作。创建   数据库失败。列出的某些文件名无法创建。校验   相关错误。

上下文初始化程序设置为MigrateDatabaseToLatestVersion

Database.SetInitializer<MyContext>(new MigrateDatabaseToLatestVersion<MyContext, DAL.Migrations.Configuration>("MyConnectionString"));

此外,自动迁移已关闭,数据库由EF Code-First在Sql-server上创建,并且已经更新为最新迁移,因此不需要迁移。

第一种情况的连接字符串为:

<add name="MyConnectionString" connectionString="Server=DESKTOP-XXXXXXX; Database=MyDatabase; Integrated Security=True; Connect Timeout=30;" providerName="System.Data.SqlClient">

,对于本地.mdf文件是:

<add name="MyConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename=|DataDirectory|\MyDatabase.mdf; Integrated Security=True;Connect Timeout=30" providerName="System.Data.SqlClient" />

那么,这是怎么回事?

1 个答案:

答案 0 :(得分:0)

对于我来说,请转到 C:\ Program Files \ Microsoft SQL Server \ SQLSERVER \ MSSQL \ DATA 文件夹,然后删除相同的数据库名称'*。mdf'文件(如果存在)。删除并重新创建数据库后,问题得以解决。