更改基础 EF 数据库
Changing Underlying EF Database
我很惊讶以前没有人问过这个问题,但这里是:
我有一个 WCF 服务,目前使用 Entity Framework 和 SQL Compact 作为基础数据源。一些要求改变了,我不能再为此使用嵌入式数据库,所以我们现在有一个完全成熟的 SQL 服务器,它反映了原始 SQL Compact 数据库的模式,并且填充了完全相同的数据。我现在正试图弄清楚如何为 Entity Framework 更改基础数据源,但看起来并没有直接的方法来执行此操作。
这是我的配置和修改它的尝试(注释掉的行是原来的内容:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServer" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<!--<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />-->
</providers>
</entityFramework>
<system.data>
<!--<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>-->
</system.data>
<connectionStrings>
<!--<add name="ApplicationServiceDataEntities" connectionString="metadata=res://*/LoanAppEntity.csdl|res://*/LoanAppEntity.ssdl|res://*/LoanAppEntity.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\ApplicationServiceData.sdf"" providerName="System.Data.EntityClient" />-->
<add name="ApplicationServiceDataEntities" connectionString="Data Source=REMOVED;Initial Catalog=LoanAppData;persist security info=True; user id=REMOVED;password=REMOVED;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
我不确定我需要修改什么,因为我以前从未这样做过。我在网上看到的大多数内容都展示了如何在运行时执行此操作,但我希望彻底改变这一点。让我感到困惑的主要事情是我不熟悉连接字符串的某些部分,包括元数据和 res://,以及在配置中看到的 ssdl/csdl/msl 扩展。
您只需注释掉或删除旧连接字符串并添加一个指向新 SQL 服务器
的新连接字符串
编辑 将连接字符串更改为 EF 生成的模型
<connectionStrings>
<add name="ApplicationServiceDataEntities" connectionString="metadata=res://*/LoanAppEntity.csdl|res://*/LoanAppEntity.ssdl|res://*/LoanAppEntity.msl;provider=System.Data.SqlClient;provider connection string="data source=DATABASEIP;initial catalog=DATABASENAME;persist security info=True;user id=DATABASEUSER;password=DATABASEPASS;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
我很惊讶以前没有人问过这个问题,但这里是:
我有一个 WCF 服务,目前使用 Entity Framework 和 SQL Compact 作为基础数据源。一些要求改变了,我不能再为此使用嵌入式数据库,所以我们现在有一个完全成熟的 SQL 服务器,它反映了原始 SQL Compact 数据库的模式,并且填充了完全相同的数据。我现在正试图弄清楚如何为 Entity Framework 更改基础数据源,但看起来并没有直接的方法来执行此操作。
这是我的配置和修改它的尝试(注释掉的行是原来的内容:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServer" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<!--<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />-->
</providers>
</entityFramework>
<system.data>
<!--<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>-->
</system.data>
<connectionStrings>
<!--<add name="ApplicationServiceDataEntities" connectionString="metadata=res://*/LoanAppEntity.csdl|res://*/LoanAppEntity.ssdl|res://*/LoanAppEntity.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\ApplicationServiceData.sdf"" providerName="System.Data.EntityClient" />-->
<add name="ApplicationServiceDataEntities" connectionString="Data Source=REMOVED;Initial Catalog=LoanAppData;persist security info=True; user id=REMOVED;password=REMOVED;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
我不确定我需要修改什么,因为我以前从未这样做过。我在网上看到的大多数内容都展示了如何在运行时执行此操作,但我希望彻底改变这一点。让我感到困惑的主要事情是我不熟悉连接字符串的某些部分,包括元数据和 res://,以及在配置中看到的 ssdl/csdl/msl 扩展。
您只需注释掉或删除旧连接字符串并添加一个指向新 SQL 服务器
的新连接字符串编辑 将连接字符串更改为 EF 生成的模型
<connectionStrings>
<add name="ApplicationServiceDataEntities" connectionString="metadata=res://*/LoanAppEntity.csdl|res://*/LoanAppEntity.ssdl|res://*/LoanAppEntity.msl;provider=System.Data.SqlClient;provider connection string="data source=DATABASEIP;initial catalog=DATABASENAME;persist security info=True;user id=DATABASEUSER;password=DATABASEPASS;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>