我在Winforms应用程序中使用实体框架。应用程序连接到MSSQLServer,一切正常。然后我分离数据库并将文件复制到应用程序文件夹并更改连接字符串以使用本地文件,仍然一切正常。.mdf.mdf
问题是,当我将应用程序与数据库一起复制到另一台 PC 时,EF 突然尝试重新创建数据库并抛出此错误:
无法创建文件“Path\MyDatabaseName.mdf”,因为它已存在。更改文件路径或文件名,然后重试该操作。创建数据库失败。无法创建列出的某些文件名。检查相关错误。
上下文初始化器设置为MigrateDatabaseToLatestVersion:
Database.SetInitializer<MyContext>(new MigrateDatabaseToLatestVersion<MyContext, DAL.Migrations.Configuration>("MyConnectionString"));
Run Code Online (Sandbox Code Playgroud)
此外,自动迁移已关闭,数据库由 EF Code-First 在 Sql-server 上创建,并且已更新为最新迁移,因此不需要迁移。
第一种情况的连接字符串是:
<add name="MyConnectionString" connectionString="Server=DESKTOP-XXXXXXX; Database=MyDatabase; Integrated Security=True; Connect Timeout=30;" providerName="System.Data.SqlClient">
Run Code Online (Sandbox Code Playgroud)
对于本地.mdf文件是:
<add name="MyConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename=|DataDirectory|\MyDatabase.mdf; Integrated Security=True;Connect Timeout=30" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
那么,这是怎么回事?