読者です 読者をやめる 読者になる 読者になる

BEACHSIDE BLOG

MicrosoftとかC#を好むレンジャーの個人的メモ

EntityFramework 6 で DbConfiguration を利用する際の注意メモ

EF6 Azure WebJobs

f:id:beachside:20160414155817j:plain

EntityFramework6(EF6)絡みの例外エラーで悩まされたことがあったのでメモ。エラーの内容は、


The default DbConfiguration instance was used by the Entity Framework before the 'MyDbConfiguration' type was discovered. An instance of 'MyDbConfiguration' must be set at application start before using any Entity Framework features or must be registered in the application's config file. See http://go.microsoft.com/fwlink/?LinkId=260883 for more information.


以前、
beachside.hatenablog.com
で DbConfiguration を使ったリトライストラテジーについて書きましたが、上記のエラーがでないよう、今更注意点を補足。

例外エラーについては、エラーメッセージのリンク
http://go.microsoft.com/fwlink/?LinkId=260883
の「Moving DbConfiguration」のあたりをシカトしていたから?。

私の事象は、

  • AzureのWebAppsで、特定のWebJobsで実行するとエラーが出る
  • デプロイしなおすと解消される...

っていう不安定っぷり。リモートデバッグで発生したことない。

そんな事象はさておき、
DbConfiguration を利用するとき(むしろ利用しない時ってあるの?)は、ちゃんと本家の記事にかいてあることをやりましょう。
私は、フルネームでアセンブリ名を指定する実装で、WebJobsの事象を回避できました。
(いろいろと腑に落ちないとこあるけど)

[DbConfigurationType("MyNamespace.MyDbConfiguration, MyAssembly")] 
public class MyContextContext : DbContext 
{ 
}

 
 
最後に私事な独り言....ですが、
私が事象のやつ、DbConfigurationを実装してるクラスはただのクラスライブラリなので、基本的に別アセンブリから利用されることしかないのですが、なんでWebJobsから呼ばれた時だけ、おかしくなるケースがあるんだろう。
たまにWebJobsのプロジェクトのPublishProfilesが勝手に書き換わっておかしくなるので、NuGetのMicrosoft.Azure.WebJobs(v1.1.1)とかMicrosoft.Web.WebJobs.Publish(1.0.11)それも影響してるんだろうなーと他人のせいにしつつ...
なにかご存知の方いないかな...と夢をみます。