ExpresswebでSQLServerCe4を使用する
- VisualStudio2010 Pro SP1
- ASP.NET MVC 3 Webアプリケーション
- ターゲットフレームワークは.NET4
- ADO.NET Entity Data Model
で確認
はじめに
SQLServerは3つまでしかDBを作成することができない。これは嬉しくないのでSQLServerCompact4を使うことにした。
インメモリデータベースを使うのは初めてで、現状はホスティング先で使用可能であることを確認しただけなので、
これから先色々SQLServerCe4に起因する事象が発生すると思われる。
Web.config
コネクション文字列
*sdfを作成してテーブル作成、それを使用してモデル作成しただけなのでVSによる自動生成されたものを使用している。
<configuration> <connectionStrings> <add name="Database1Entities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=|DataDirectory|\Database1.sdf"" providerName="System.Data.EntityClient" /> </connectionStrings> ... </configuration>
アセンブリバージョン指定
こんな感じで指定する。
<configuration> ... <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" /> <bindingRedirect oldVersion="4.0.0.0" newVersion="4.0.0.1" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
SQLServerCe4アセンブリファイルの配置
Expresswebにはインストールされていないようなので、アセンブリファイル一式もアップロードしてやる必要がある。
<SQLServerCe4のインストールフォルダ>/private フォルダ以下すべてのファイルをMVCプロジェクトのbinフォルダにコピーする。
ファイルのプロパティ(ビルドアクション,ディレクトリにコピー)は特に変更していない。
配置後作業
アプリケーションデプロイ後jに *sdfのパーミッション設定を行う必要がある。
ブラウザからsdfファイルへアクセスはできなさそうなので、とりあえずはこれでよしとする。