91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3.32M
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2020-12-26
  • 語言: C#
  • 標(biāo)簽: SQLite??Linq??

資源簡介

前言

當(dāng)前,軟件應(yīng)用程序中,數(shù)據(jù)庫已經(jīng)成為不可缺少的重要組成部分.然而傳統(tǒng)數(shù)據(jù)庫正趨向巨無霸化,對系統(tǒng)的要求一步步提高,管理成本也越來越大,對于中小型項(xiàng)目的應(yīng)用,它的很多功能變得越來越多余,但是我卻不得不為這些不需要的功能付出更多的資金和人力成本. 在這些場景,嵌入式數(shù)據(jù)庫的輕量,零部署,跨平臺,義移植,無疑有著傳統(tǒng)數(shù)據(jù)庫無可比擬的優(yōu)點(diǎn),當(dāng)然為此我們必須放棄高容量,高性能,高并發(fā),不過誰在乎這些呢?我們只是中小型應(yīng)用而已,大小不上百萬,并發(fā)不超萬^_^.

在.Net中,我們可以選擇的嵌入式數(shù)據(jù)庫還是挺多的,db4o,sqlite,各種xml db. 我之前更傾向于使用db4o,db4o對于用傳統(tǒng)ADO.Net驅(qū)動(dòng)的開發(fā)有更多的優(yōu)勢,無需手動(dòng)Mapping,零SQL.不過整因?yàn)閐b4o做了很多處理,所以在數(shù)據(jù)持久化的過程中,我們能干預(yù)的也很少,而db4o在復(fù)合屬性,級聯(lián)屬性,特別當(dāng)整個(gè)系統(tǒng)使用富領(lǐng)域模型設(shè)計(jì)的時(shí)候,保存數(shù)據(jù)的時(shí)候往往會出錯(cuò).為此我們不得不自己手工持久化復(fù)合對象中的各個(gè)對象,增加關(guān)聯(lián)字段進(jìn)行關(guān)聯(lián),這樣一來就越加靠近SQL Server之類的傳統(tǒng)數(shù)據(jù)庫的時(shí)候,顯得名不符實(shí).而在web應(yīng)用中,為了提供并發(fā)的能力,還必須使用server/client的模式進(jìn)行數(shù)據(jù)傳輸.總讓我感覺有那么點(diǎn)點(diǎn)別扭.

自從DLINQ出來之后,我的項(xiàng)目越來越依賴于它,它讓我們的程序更加優(yōu)雅清晰,再也不用無聊的拼湊一段又一段的sql,編寫一遍又遍的配置.可惜的是MS只提供LINQ TO SQL(MS SQL SERVER)的實(shí)現(xiàn). 還好LINQ思想出現(xiàn)之后,社區(qū)里涌現(xiàn)了各種各樣的LINQ Provider程序,大有一切皆LINQ的架勢(LINQ TO Everything),SQLite自然不例外.今天我們進(jìn)來嘮嘮如何將SQLite引入我們的開發(fā).

ADO.Net Provider&LINQ Provider

首先,下載SQLite的LINQ Provider,在網(wǎng)上我們可以找到兩個(gè)LINQ Provider For SQLite. 一個(gè)是phxsoftwareSystem.Data.SQLite,另一個(gè)是devartdotConnect for SQLite. System.Data.SQLite是開源產(chǎn)品,而dotConnect For SQLite是商業(yè)產(chǎn)品(有個(gè)一個(gè)免費(fèi)普通版本).我們這里選擇System.Data.SQLite作為我們的LINQ Provider.

從Sourceforge下載SQLite-1.0.60.0-setup.exe,然后安裝.結(jié)束的時(shí)候,會讓你Install SQLite Design-Time Support,把里面的VS2005/VS2008 都打上勾

這樣子你就可以在VS的Server Explorer里面像管理SQL Server的數(shù)據(jù)庫一樣管理你的SQLite數(shù)據(jù)庫文件.安裝完之后,我們得到以下文件

創(chuàng)建數(shù)據(jù)庫

要?jiǎng)?chuàng)建一個(gè)空的SQLite數(shù)據(jù)庫,可以選擇兩種方式.

1. 從http://www.sqlite.org/download.html下載Window下的程序(http://www.sqlite.org/sqlite-3_6_19.zip),然后通過命令行創(chuàng)建.

  • .db3后綴名可以任意,你也可以使用其他的任意后綴名.
  • 在sqlite>的shell下,必須輸入什么,如果直接.exit退出的話,數(shù)據(jù)庫文件將不會被創(chuàng)建

2.從http://www.sqlite.org/cvstrac/wiki?p=ManagementTools下載各種GUI程序.

數(shù)據(jù)庫文件創(chuàng)建好了之后,拷貝到你想要的位置,然后打開VS的Server Explorer(當(dāng)然如果你使用GUI程序,你就不需要VS的這個(gè)功能了),我們可以在里面維護(hù)表信息

 

 

我們先設(shè)計(jì)兩個(gè)表,以便繼續(xù)下面的步驟.

創(chuàng)建項(xiàng)目

創(chuàng)建DataContext

當(dāng)你將表拉入dbml的時(shí)候,會得到如下錯(cuò)誤"The selected object(s) use an unsupported data provider."

dbml designer和DLINQ一樣,微軟只實(shí)現(xiàn)了For SQL SERVER的功能,其他數(shù)據(jù)庫都沒實(shí)現(xiàn).既然不能生成dmbl,那我們生成code就好了,反正這個(gè)layout我們一般也沒什么用.找到從windows sdk目錄下找到Code Generation Tool (SqlMetal.exe). 不幸的是,這個(gè)東東也只支持MS本家的東西,而且不支持Generator擴(kuò)展-_-!!!.

既然phxsoftware提供的LINQ Porivder,說不定有提供自定義的代碼生成工具.不過看來看去,發(fā)現(xiàn)只支持Entity Frameworkd Entity Model的生成,但是沒有LINQ TO SQLite的支持(dotConnect for SQLite 倒是對二者都支持).

難道我們要手動(dòng)編寫DataContext?怎么可能,肯定有人實(shí)現(xiàn)了,google下,找到了一個(gè)DLINQ2007的項(xiàng)目,提供好多LINQ Provider的實(shí)現(xiàn)(包括SQLite).發(fā)現(xiàn)里面有個(gè)DbMetal.exe,支持從SQLite生成DataContext類.雖然不如MS的的完美,不過能自動(dòng)生成基本的DataContext,這就是最大的收獲,不然像我這么依賴LINQ的人只好放棄SQLite了^_^.DbMetal.exe生成DataContext的命令行,類似SqlMetal.exe.

	

DbMetal.exe /database:TestDataContext  /schema /namespace=LinqToSQLite /sprocs /entityInterfaces= /culture="en"  /code=Test.cs /provider=Sqlite  /conn="data source=D:\doc\my\data\code\LinqToSQLite\dlls\Test.db3"

/database指定類名, /namespace=LinqToSQLite指定命名空間...,具體的參數(shù)可以在命令行下獲取到(dbmetal.exe /?).

不過這個(gè)DbMetal.exe一樣不完善,不是什么結(jié)構(gòu)都可以生成,比如數(shù)據(jù)庫帶有外鍵的話,生成就會出錯(cuò).

 

	

生成后的代碼大概如下(可能需要手工清理下SystemTable的對應(yīng)的class):

public partial class TestDataContext : DbLinq.Data.Linq.DataContext { public TestDataContext(System.Data.IDbConnection connection): base(connection, new DbLinq.Sqlite.SqliteVendor()) { } public TestDataContext(System.Data.IDbConnection connection, DbLinq.Vendor.IVendor vendor): base(connection, vendor) { } public Table Order { get { return GetTable(); } } public Table OrderItem { get { return GetTable(); } } }

 

資源截圖

代碼片段和文件信息

#region?Auto-generated?classes?for?TestDataContext?database?on?2009-10-27?17:13:07Z

//
//??____??_?????__??__??????_????????_
//?|??_?\|?|__?|??\/??|?___|?|_?__?_|?|
//?|?|?|?|?‘_?\|?|\/|?|/?_?\?__/?_‘?|?|
//?|?|_|?|?|_)?|?|??|?|??__/?||?(_|?|?|
//?|____/|_.__/|_|??|_|\___|\__\___|_|
//
//?Auto-generated?from?TestDataContext?on?2009-10-27?17:13:07Z
//?Please?visit?http://linq.to/db?for?more?information

#endregion

using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Data.Linq.Mapping;
using?System.Diagnostics;
using?System.Linq;
using?System.Reflection;
using?System.Text;
using?DbLinq.Data.Linq;
using?DbLinq.Linq;
using?DbLinq.Linq.Mapping;

namespace?LinqToSQLite
{
public?partial?class?TestDataContext

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件?????295424??2008-09-13?20:53??LinqToSQLite\dlls\DbLinq.dll

?????文件????4788736??2008-09-13?20:54??LinqToSQLite\dlls\DbLinq.Localization.dll

?????文件??????14336??2008-09-13?20:54??LinqToSQLite\dlls\DbLinq.Sqlite.dll

?????文件??????93696??2008-09-13?20:54??LinqToSQLite\dlls\Dbmetal.exe

?????文件???????2214??2008-05-03?22:16??LinqToSQLite\dlls\Dbmetal.exe.config

?????文件????????213??2009-10-27?17:13??LinqToSQLite\dlls\GenerateDataContext.bat

?????文件?????629760??2008-01-18?14:29??LinqToSQLite\dlls\System.Data.SQLite.DLL

?????文件?????174080??2008-10-03?08:36??LinqToSQLite\dlls\System.Data.SQLite.Linq.dll

?????文件???????4762??2009-10-27?17:13??LinqToSQLite\dlls\Test.cs

?????文件???????9216??2009-10-27?17:17??LinqToSQLite\dlls\Test.db3

?????文件?????295424??2008-09-13?20:53??LinqToSQLite\LinqToSQLite\bin\Debug\DbLinq.dll

?????文件??????14336??2008-09-13?20:54??LinqToSQLite\LinqToSQLite\bin\Debug\DbLinq.Sqlite.dll

?????文件???????7680??2009-10-27?17:32??LinqToSQLite\LinqToSQLite\bin\Debug\LinqToSQLite.dll

?????文件??????22016??2009-10-27?17:32??LinqToSQLite\LinqToSQLite\bin\Debug\LinqToSQLite.pdb

?????文件?????629760??2008-01-18?14:29??LinqToSQLite\LinqToSQLite\bin\Debug\System.Data.SQLite.DLL

?????文件????????568??2009-10-27?17:32??LinqToSQLite\LinqToSQLite\Helper.cs

?????文件???????3839??2009-10-27?17:23??LinqToSQLite\LinqToSQLite\LinqToSQLite.csproj

?????文件????????168??2009-10-27?17:14??LinqToSQLite\LinqToSQLite\LinqToSQLite.csproj.user

?????文件????????607??2009-10-27?17:25??LinqToSQLite\LinqToSQLite\obj\Debug\LinqToSQLite.csproj.FileListAbsolute.txt

?????文件???????7680??2009-10-27?17:32??LinqToSQLite\LinqToSQLite\obj\Debug\LinqToSQLite.dll

?????文件??????22016??2009-10-27?17:32??LinqToSQLite\LinqToSQLite\obj\Debug\LinqToSQLite.pdb

?????文件???????3584??2009-10-27?16:02??LinqToSQLite\LinqToSQLite\obj\Debug\TempPE\LingToSQLite.designer.cs.dll

?????文件???????1460??2009-10-27?13:45??LinqToSQLite\LinqToSQLite\Properties\AssemblyInfo.cs

?????文件???????4718??2009-10-27?17:15??LinqToSQLite\LinqToSQLite\Test.cs

?????文件???????1898??2009-10-27?17:14??LinqToSQLite\LinqToSQLite.sln

?????文件???????9216??2009-10-27?17:17??LinqToSQLite\LinqToSQLite.Web\App_Data\Test.db3

?????文件?????295424??2008-09-13?20:53??LinqToSQLite\LinqToSQLite.Web\bin\DbLinq.dll

?????文件????4788736??2008-09-13?20:54??LinqToSQLite\LinqToSQLite.Web\bin\DbLinq.Localization.dll

?????文件??????14336??2008-09-13?20:54??LinqToSQLite\LinqToSQLite.Web\bin\DbLinq.Sqlite.dll

?????文件???????7680??2009-10-27?17:32??LinqToSQLite\LinqToSQLite.Web\bin\LinqToSQLite.dll

............此處省略34個(gè)文件信息

評論

共有 條評論