根据配置中的提供程序更改EF6中的连接字符串

时间:2013-09-11 09:44:30

标签: c# orm entity-framework-6

我已从EF5移至EntityFramework 6。

现在我遇到了一个问题,我想根据app.Config中设置的提供程序更改连接字符串。 含义如果是SqlServerCe,那么我需要更改DatabaseFile.sdf文件名来更改数据库。 如果是SqlServer,我需要更改InitialCataloge。

我通过获取

的类型来做到这一点

'Database.DefaultConnectionFactory'但这在EF6中已过时。

如何根据提供程序修改连接字符串。

我无法通过使用DbConfiguration属性来实现这一点,因为我每次都需要修改连接字符串。

1 个答案:

答案 0 :(得分:3)

您可以使用

DbConfiguration.SetConfiguration(new YourDbConfiguration());

因此您可以在不使用属性的情况下使用配置。

但如果我使用

public CeDbConfiguration()
{
 SetDefaultConnectionFactory(new SqlCeConnectionFactory(SqlCeProviderServices.ProviderInvariantName,
                                                        @"c:\test",
                                                        @"c:\test\db.sdf"));
SetProviderServices(SqlCeProviderServices.ProviderInvariantName,
                    SqlCeProviderServices.Instance);
}

要配置SQL CE Factory,路径'C:\ test'将被忽略,我必须设置Database.DefaultConnectionFactory !!