1. 程式人生 > >Sqlite之Code First(EF6)

Sqlite之Code First(EF6)

Sqlite with Entity Framework Code First

來個高大上的標題騙騙顧客,來了就看一下嘛
關於SQLite的CodeFirst,相信你看過很像的DBfirst例子,然後感覺十分坑,想放棄,又不甘心,如果是這樣的話,那就再給我坑一下吧,哈哈哈
我認為是符合我標準的codefirst,如果你信的話。

使用類庫

直接上個截圖,大家都可以在nuget上引用進來,不過我提兩個要注意的地方:
1.System.Data.SQLite.EF6.Migrations 這個類庫用最新的吧,如果有更新的話,這是資料庫遷移工具,(sqlite本身是沒有資料庫遷移 MigrationSqlGenerator 功能);

2.EntityFramework,這個可以考慮用我現在的版本,我當時用的太高,有點問題,在資料連線時候,如果最新的EntityFramework有問題的話,那就用我這個V6.13吧。

配置

需要在App.config 下配置entityFrameworkproviders
還有system.data下的****DbProviderFactories,如果不想看到sqlserver的那個,可以刪掉的。

<providers>
      <provider invariantName="System.Data.SQLite"
type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers>
<DbProviderFactories>
      <remove invariant
="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> <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" /> </DbProviderFactories>

類設計

需要4個類:
1. Entity 類(實體類) //我這個實體類有點複雜了,中間涉及到了一個View的一層轉換,大家別介意了,純屬滿足自己的邏輯
2. Mapping 類(實體配置) //這個呼叫ef的模型類,配合遷移操作
3. DbContext 類(資料庫操作) //外部訪問的類,可使用linq和lambda操作
4. Configuration 類(設定資訊)//配置遷移資訊
這裡就不列出程式碼,大家可以下載原始碼檢視(在底部)

使用

這裡我只舉了一個很簡單新增操作例子,有關linq,lambda的操作都沒有用到,大家可以自己嘗試一下,
別嫌我不直接上程式碼,有些東西必須的自己親自動手過了,才會懂得,好好玩吧。

using (var db = new SQLiteDB())
            {
                FlowView fv = new FlowView()
                {
                    DatetimeLastUpdate=DateTime.UtcNow.Ticks.ToString(),
                    Id=Guid.NewGuid().ToString(),
                };
                db.Flows.Add(fv);
                db.SaveChanges();
            }

更加詳細的資料

最後修改:2017年8月25日12:11:13(1)