本地数据库上的代码优先EF-迁移到企业SQL Server

本文关键字:迁移 EF- 企业 Server SQL 数据库 代码 | 更新日期: 2023-09-27 18:27:46

我最初使用LocalDB将应用程序的数据模型开发为Code First EF6,一切都很好。

我现在需要将数据库移到我们的Enterprise SQL Server环境中,但我没有适当的权限来使用Code First。。。所有要创建/修改的脚本都必须由DBA生成、评估、批准和执行。。

我遇到的问题是我的DB Connect字符串有问题,因为我尝试过的那些都失败了。如前所述,在我使用LocalDB之前,使用了默认的连接字符串。

DBContext构造函数

public HotelRequestDBContext() : base("HotelRequestsDB")
{
    //Database.SetInitializer<HotelRequestDBContext>(new HotelRequestDBContextInitialiser());
    if (Properties.Settings.Default.EFTrace)
    {
        this.Database.Log = msg => System.Diagnostics.Trace.WriteLine(msg);
    }
}

连接字符串尝试1

<add name="HotelRequestsDB" connectionString="Data Source=server'instance;initial catalog=HoteRequests;persist security info=True;user id=username;password=password;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.EntityClient" />

Exception thrown: 'System.ArgumentException' in EntityFramework.dll

Additional information: Keyword not supported: 'data source'.

If there is a handler for this exception, the program may be safely continued.

连接字符串尝试2

<add name="HoteRequestsDB" connectionString="metadata=res://*/HoteRequests.csdl|res://*/HoteRequests.ssdl|res://*/HoteRequests.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=server'instance;initial catalog=HoteRequests;persist security info=True;user id=user;password=password;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

异常弹出窗口

Exception thrown: 'System.Data.DataException' in EntityFramework.dll

Additional information: An exception occurred while initializing the database. See the InnerException for details.

If there is a handler for this exception, the program may be safely continued.

调试输出窗口

Cannot attach the file 'C:'Projects'HotelRequests'HotelRequests'App_Data'HotelRequestsDB.mdf' as database 'HotelRequestsDB'.

本地数据库上的代码优先EF-迁移到企业SQL Server

连接字符串providerName="System.Data.EntityClient"的末尾通常会导致这种情况。在启动项目的配置文件中的某个位置,您应该看到一些带有<entityFramework>标记的xml。它是自动生成的。

要连接到sql服务器,您需要确保<provider>如下所示:

<entityFramework>
<providers>
  <provider invariantName="System.Data.EntityClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

(您也应该将连接字符串和提供者名称中的名称更改为System.Data.SqlClient,以确保正确。)