C 使用EF訪問Sqlite資料庫

2021-09-19 22:23:22 字數 2782 閱讀 9671

原文:

【c#】使用ef訪問sqlite資料庫

entityframework

system.data.sqlite

system.data.sqlite.core

system.data.sqlite.ef6

system.data.sqlite.linq

name="sqlitetest"

connectionstring="data source=e:\retail.db"

providername="system.data.sqlite.ef6" />

connectionstrings>

2.然後就可以 編寫資料庫上下文和實體了,然後就可以用了

public

class retailcontext : dbcontext

public dbsetthumbnails

} public

class thumbnail

[required]

[unique]

public

string orginfilepath

[required]

public

string thumbnailpath

[required]

public datetime lastupdatetime

}

不過在執行過程中你可能會遇到這個錯誤sqlite error of 「unable to find the requested .net framework data provider.
"system.data.sqlite"

type="system.data.sqlite.ef6.sqliteproviderservices, system.data.sqlite.ef6" />

完整的如下:

invariantname="system.data.sqlite.ef6"

type="system.data.sqlite.ef6.sqliteproviderservices, system.data.sqlite.ef6" />

invariantname="system.data.sqlclient"

type="system.data.entity.sqlserver.sqlproviderservices, entityframework.sqlserver" />

invariantname="system.data.sqlite"

type="system.data.sqlite.ef6.sqliteproviderservices, system.data.sqlite.ef6" />

providers>

public

class thumbnailcontext : dbcontext

}private

thumbnailcontext(dbconnection con) : base(con, true)

public dbsetthumbnails

}

sqlite預設不支援codefirst模式,如果使用者因為某些操作刪除了我們的db檔案,此時我們的程式就不能正常工作了,是不是有點尷尬?不過還是有解決辦法的,在nuget裡搜尋sqlite.codefirst安裝即可。

然後重寫dbcontextonmodelcreating方法。這裡是修改後的資料庫上下文:

public

class thumbnailcontext : dbcontext

}private

thumbnailcontext(dbconnection con) : base(con, true)

protected

override

void

onmodelcreating(dbmodelbuilder modelbuilder)

public dbsetthumbnails

}

在使用過程中你可能會察覺到,每當第一次訪問資料庫(查詢、插入等)時總是會慢一點,可能有1秒的時間資料庫才會做出響應,然後接下再操作就很快。

這是因為當你第一次訪問資料庫時,ef需要在記憶體中建立實體與資料庫表的對映關係,這個操作需要點時間。所以在你的程式一啟動的時候就要把關係給對映好。

這裡以上面的thumbnailcontext為例,首先new乙個物件,假設為dbcontext。然後在你整個應用程式的入口點呼叫下述**:

public

void

init()

後記:通過ef來訪問sqlite資料庫,我也使用了有一段時間了,但是有時候會出現幾個莫名奇妙的問題,而且還不太好定位,不知道是不是ef和sqlite不太相容的問題。現在嘗試改為用ado.net來訪問,於是就有了接下來的這篇文章:【c#】使用ado.net訪問sqlite資料庫,sqlitehelper幫助類。

1. sqlite3+ef6踩的坑

2. 讓entityframework6支援sqlite

C 使用EF訪問Sqlite資料庫

entityframework system.data.sqlite system.data.sqlite.core system.data.sqlite.ef6 system.data.sqlite.linq name sqlitetest connectionstring data source...

應用EF訪問SQLite資料

1 建立專案 專案結構初始結構如下圖所示,netage.data.sqlite 類庫專案用於定義訪問資料的介面和方法,netage.sqlitetest.ui 控制台專案引用 netage.data.sqlite 類庫,呼叫其相應的方法來訪問資料。2 在專案中加入sqlite類庫 右鍵 netage...

C 訪問SQLite資料庫

a.解壓後copy c sqlite 3 5 0 b.進入cmd模式,進入sqlite 3 5 0目錄,執行sqlite3 mytest.db c.create table mytable1 seq int,desc varchar 8 insert into mytable1 values 1,p...