SQLのログ
Somaは、Entity Frameworkをベースにしたフレームワークにすることにしました。PostSharpを使うのは見送り。
O/Rマッパーには必須と思われるSQLのログを出力する機能がEntity Frameworkにはないので、プロバイダーをラップしてSQLが実行される直前でログ出力可能にしようと思います。
Visual StudioにはEntity FrameworkのData ModelをSQL Serverから作る機能がありますが、この機能を使うと接続文字列をapp.configなどに生成してくれます。Somaを使う場合は、この接続文字列に含まれるプロバイダーの名前をカスタマイズすることになります。
<connectionStrings> <add name="MyObjectContext" connectionString="...(略)... provider=Soma.Data.Client.SqlClientFactoryWrapper; ...(略)...;" providerName="System.Data.EntityClient" /> </connectionStrings>
Soma.Data.Client.SqlClientFactoryWrapperというプロバイダを利用できるようにするにはapp.configなどに次のような記述を付け加えます。
<system.data> <DbProviderFactories> <add name="Soma Data Provider Wrapper for SqlServer" invariant="Soma.Data.Client.SqlClientFactoryWrapper" support="FF" description="Soma Data Provider Wrapper for SqlServer" type="Soma.Data.Client.SqlClientFactoryWrapper, Soma" /> </DbProviderFactories> </system.data>
この記述、もしかしたらSomaのアセンブリに入れてしまうことができるかも?試さないとわからないですが、もしできれば使う側は接続文字列に含まれるプロバイダーの名前を変更するだけなので楽になりますね。