在DbMigrationsConfiguration中替换DbProviderServices?

时间:2015-04-24 20:42:30

标签: entity-framework-6.1

在EF6.1.3中,我试图用新的Provider Service替换当前的DbProviderService。在DbConfiguration中,这可以通过向Loaded事件添加代码来实现:

Loaded += (sender, args) =>
                args.ReplaceService<DbProviderServices>(
                (s, _) => new SomeProviderServices(s, myhandler));

如果我尝试在DbMigrationsConfiguration构造函数

中执行此操作
DbConfiguration.Loaded += (sender, args) =>
                args.ReplaceService<DbProviderServices>(
                (s, _) => new SomeProviderServices(s, myhandler));

我得到一个异常,说明EF已经加载,我现在无法更改Loaded事件处理程序。

在这种情况下,我应该采取什么行动?感谢。

2 个答案:

答案 0 :(得分:0)

您可以采取一些措施。我举例修改了网络配置:

<entityFramework codeConfigurationType="MyNamespace.Assembly1.MyConfigurationClass, MyNamespace.Assembly1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b254a7d323adadef">

答案 1 :(得分:0)

您必须在应用程序启动时定义Loaded事件。 在MVC应用程序中,您可以将此行代码放在Global.asax Application_Start(MVC 4)或启动配置(OWIN)方法中:

 DbConfiguration.Loaded += (sender, args) =>
            args.ReplaceService<DbProviderServices>(
            (s, _) => new SomeProviderServices(s, myhandler));

Loaded是DBConfiguration中的静态事件,因此当您的实体框架启动时,您将执行此事件。