天天看點

VS2013下使用建立sqlite的ADO.NET實體資料模型

前言

特别鳴謝:

VS2012啟用SQLite的Data Provider

以及

using-sqlite-with-entity-framework-6

第二篇文章的連結是在stackoverflow找到的, sqlite-connection-not-appearing-in-entity-data-model-wizard

但是這個問題跟我的沒有半毛錢關系我隻是各種搜尋答案而已。

解決方案

  1. 安裝DDEX(aka Data Designer Extensibility)
  2. NuGet擷取EF6實體最新版本以及擷取System.Data.SQLite.EF6
  3. 工程修改為x86平台運作
  4. config檔案添加Data Provider說明
  5. 正常添加ADO.NET的SQLite實體資料模型

詳細

環境

Win7 SP1 64bit

VS2013

詳細解決方案

  1. 安裝DDEX(aka Data Designer Extensibility)

    System.Data.SQLite is an ADO.NET provider for SQLite

    NOTE: 文章釋出時64-bit版本也已經有designer,[del]但是未經驗證,是以請務必安裝32-bit的版本。[/del]

    2016.12.15 更新:已驗證,4.5.1版本的DDEX,64位下無法成功使用designer,隻有32位可以(但是32位相容64位)。是以大家請使用32位的版本。

    下載下傳的程式名字在目前版本應該是sqlite-netFx451-setup-bundle-x86-2013-1.0.101.0.exe

    總之,下載下傳的應該是:Setups for 32-bit Windows (.NET Framework 4.5.1)對應的程式。

安裝的時候選custom就好,具體打鈎内容如下,主要是必須勾選Designer:

VS2013下使用建立sqlite的ADO.NET實體資料模型

(有人提及到了要允許GAC,安裝過程中我沒有遇到,如果沒有正确添加,可以手動到安裝目錄下的GAC裡面去添加,具體添加方法請自行搜尋)

安裝完畢之後,工具-連接配接到資料庫中應該可以添加SQLite資料庫。

  1. NuGet擷取EF6實體最新版本以及System.Data.SQLite.EF6

    工程-管理NuGet程式-使用EF6最新版本

    工程-管理NuGet程式-搜尋sqlite,找到System.Data.SQLite.EF6,安裝。(應該僅依賴EF6)

  2. 工程設定為解決方案平台為x86。
    VS2013下使用建立sqlite的ADO.NET實體資料模型
    我隻在x86平台下成功(盡管我的開發環境是64-bit),并且初步測試與DDEX的版本沒有任何關系。
  3. config檔案添加Data Provider說明

    修改config檔案,應該如下圖所示:

    VS2013下使用建立sqlite的ADO.NET實體資料模型
<add name="SQLite Data Provider"  invariant="System.Data.SQLite"  description=".NET Framework Data Provider for SQLite"  type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
           

然後build / rebuild 工程。

  1. 正常添加ADO.NET的SQLite實體資料模型

    工程-添加-建立項-資料-ADO.NET實體資料模型-從資料庫-可以選擇SQLite資料庫。

    VS2013下使用建立sqlite的ADO.NET實體資料模型

注意:LinQ等支援暫時未測試。

問題表現

  1. 資料連接配接中無法添加sqlite資料庫,

    (anyway我已經不記得我當時是安裝了什麼東西導緻可以添加連接配接了)

  2. ADO.NET實體類無法正确添加SQLite實體

    就是在添加ADO.NET之後,資料引用一直沒有SQLite的資料庫。

    VS2013下使用建立sqlite的ADO.NET實體資料模型

P.S.

附上檢視sqlite資料庫的好用工具:

sqlitebrowser