同时使用SQL Server Compact和SQL Server与Entity Framework

时间:2016-09-30 05:53:51

标签: entity-framework

我有一个适用于 SQL Server Compact 的Web应用程序。现在,我正在添加 SQL Server 模型。如果我只是简单地将 SQL Server 连接字符串传递给DbContext实例,我会收到以下错误:

  

System.ArgumentException:附加信息:不支持关键字:'application name'。

如果我从

更改 web.config ,我可以修复 SQL Server (但打破 SQL Server Compact
 <entityFramework>
-  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
     <parameters>
-      <parameter value="System.Data.SqlServerCe.4.0" />
     </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>

要:

 <entityFramework>
+  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
     <parameters>
+      <parameter value="mssqllocaldb" />
     </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> 

我怎样才能继续工作?我想我需要在 web.config 中添加一些<context>标签,但我没有做对。

1 个答案:

答案 0 :(得分:0)

解决!我最初使用默认的 SQL Server Compact 连接工厂离开了 web.config 。唯一的区别是我添加了 SQL Server 提供程序,如下所示:

ArrayList

然后,在我的模型上下文类中,我像这样调用 <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> <parameters> <parameter value="System.Data.SqlServerCe.4.0" /> </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" /> + <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> 构造函数:

DbContext(DbConnection existingConnection, bool contextOwnsConnection)

现在我可以使用多个提供商。