安裝VS 2010所需設計元件
至System.Data.SQLite Download Page下載於VS 2010開發時所需的元件安裝檔sqlite-netFx40-setup-bundle-x86-2010-1.0.87.0.exe安裝檔。安裝過程中需勾選Install the designer components for Visual Studio 2010
安裝Entity Framework
透過以下nuget指令安裝Entity Framework
Install-Package EntityFramework
安裝System.Data.SQLite
透過以下nuget指令安裝System.Data.SQLite
Install-Package System.Data.SQLite
安裝完後在References中會看到System.Data.SQLite和System.Data.SQLite.Linq,專案內會新增兩個資料夾x64和x86,兩個資料夾內各有一個名為SQLite.Interop.dll的檔案。
建立ADO.NET Entity Data Model
在專案中新增一個ADO.NET Entity Data Model項目
點選New Connection,將Data source選取為System.Data.SQLite Database File,Data provider為.NET Framework Data Provider for SQLite
點選New,建立一個SQLite資料庫,如果資料庫已存在則點選Browse找出資料庫存在路徑即可。
設定完成後,在專案中會新增一個*.edmx檔案。在Server Explorer中也可以連線到剛建立的SQLite資料庫,讓我們可以在VS上操作資料庫。在這裡先建立一個測試用的資料表Log和其兩個欄位分別為LogId及LoggedOn。
更新Entity Data Model (*.edmx),可以看到資料表Log已被放入Entity Data Model中
安裝EF 5.x DbContext Generator for C#擴充樣板
這個步驟不是必須,但如果希望Entity Framework產生的是POCO類別的話透過這個擴充樣板便可輕鬆完成。至Extension Manager (Tools-> Extension Manager)中搜尋poco,便可看到EF 5.x DbContext Generator for C#選項並進行安裝。
安裝完成後回到*.edmx,右鍵選取Add Code Generation Item,選擇EF 5.x DbContext Generator for C#並為樣板命名
按下Add後便會開始產生POCO類別,可以在專案下看到*.tt及*.Context.tt兩個新增檔案。*.tt裡的Log.cs即是對應資料表Log產生的POCO類別。
測試程式
執行以下程式,便可將資料新增至SQLite資料庫中
using (DemoEntities context = new DemoEntities()) { context.Logs.Add(new Log { LogId = Guid.NewGuid(), LogedOn = DateTime.UtcNow }); context.SaveChanges(); }
部署注意事項
將應用程式部署到測試機上,執行後出現The specified store provider cannot be found in the configuration, or is not valid.錯誤訊息。更細部的錯誤訊息為Unable to find the requested .Net Framework Data Provider. It may not be installed.
加入以下設定至設定檔<configuration>區段中即可解決此問題
<system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite"/> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.87.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/> </DbProviderFactories> </system.data>1.0.87.0是我所使用的System.Data.SQLite元件版本。