星期三, 5月 13, 2009

Entity Framework 和 SQLite

最近發現一個很不錯的東西 SQLite..它是一個攜帶式的資料庫..來看一下他官方網站的介紹..

Many people like SQLite because it is small and fast. But those qualities are just happy accidents. Users also find that SQLite is very reliable. Reliability is a consequence of simplicity. With less complication, there is less to go wrong. So, yes, SQLite is small, fast, and reliable, but first and foremost, SQLite strives to be simple.

這是從他們官方網站介紹抓出來的..small, fast, reliable 是它的賣點..看到這些..還不夠..如果有些大廠都使用它了..那真的就可以更放心去使用了..目前有 Symbian, loomberg, Adobe, Mozilla 這些公司已經使用..所以別懷疑ㄅ..衝ㄅ..Open-mouthed..

其實我當初要使用時..是為了來取代 ms access..找阿找阿..發現一篇文章..SQLite - 檔案型資料庫..他裡面有蠻多可以參考的東西..有空者可以去看一下..接下來我紀錄一下 entity framework 跟 SQLite 的簡單測試..

要讓 entity framework 可以支援 SQLite ..要先裝上 SQLite 的 Provider..先到

http://sourceforge.net/project/showfiles.php?group_id=132486&package_id=145568

image

下載完..解壓縮後安裝完就行了..這樣在我們新增 entity framework 時就會..有選項給我們選了..

image

之後在新增 db 時設定一下..

image

image

就可以開始新增 table 了..

image

看一下介面..其實跟 ms sql 的設定方法很像..

image

還可以設定 relationshipping..哈..讚..

image

我首先是新增兩個datatable..分別為 TestA, TestB..來作 Master 跟 Detail 的 練習..

image

image

不過其實有一個"不足"的地方..就是它的 int 不能設定為自動新增..這樣會造成新增資料時會有重複的 pk 值..晚一點在寫信去跟作者溝通溝通看可不可以把這很不方便的地方改一下..我現在的解決方法是..去下載 SQLite Administrator 這個 free 的 SQLite 的管理程式..

image

選擇資料庫..然後編輯 table 的 pk值把下面那個 Auto Increment 的選項勾起來就可以自動新增了..(介面很裝可愛ㄟ)

image

呼呼..用到這裡..差不多設定好了..來寫一段程式來測試一下..

using (SqliteDBModel.SqliteDBEntities db = new SqliteDBModel.SqliteDBEntities())
{
var aaaa = db.TestB.Where(a => a.TestA.ID == 10).Take(3);
foreach (var a in aaaa)
{
a.TestAReference.Load();
Response.Write(a.Name + " " + a.DtInsert.ToString("yyyy/MM/dd HH:mm:ss")
+ " 屬於:" + a.TestA.Name + "<br />");
}
}

上面這段是用 linq to entity 把關聯資料抓出來..我們來看看產生出來的 sql statement

image

呼呼..entity frame..幫我們產生出該出現的 sql statement 了..只要把 SQLite Provider 裝好..就可以忘記現在是用哪個database..用原本熟系的模式開發..可以說是輕鬆自在..Vampire BatVampire BatVampire BatVampire BatVampire Bat..

參考:
http://blog.willie.tw/archives/18

1 則留言:

demo 提到...

SQL CE 也不錯唷
http://demo.tc/view.aspx?id=488

之前比較過 SQL Lite 和 SQL CE
不過相關的資料遺失了>"<