linq和sql的區(qū)別 Linq和LinqtoSql有什么區(qū)別?一般做項目用哪種?
Linq和LinqtoSql有什么區(qū)別?一般做項目用哪種?Linq是微軟在.net3.0推出的一種新的數(shù)據(jù)訪問和處理的方式,來解決過去處理集合對象數(shù)據(jù)所遇到的種種困難。其中在C#3.0和VB9中分別引
Linq和LinqtoSql有什么區(qū)別?一般做項目用哪種?
Linq是微軟在.net3.0推出的一種新的數(shù)據(jù)訪問和處理的方式,來解決過去處理集合對象數(shù)據(jù)所遇到的種種困難。其中在C#3.0和VB9中分別引入了和SQL相似的Linq語法,使得現(xiàn)在操作各種數(shù)據(jù)對象變得非常容易而且可讀性更好。
Linq To Sql是微軟默認(rèn)提供的LinqProvider的一種,其他的還有LinqToDataSet LinqToXml LinqToEntity等。
平時開發(fā)項目可以大量的使用linq,他會讓你在處理大量集合數(shù)據(jù)的時候提高效率。而Linq2Sql算是一個ORM框架,可以用來減輕數(shù)據(jù)訪問的負擔(dān),如果你知道Hibernate之類的ORM框架的話,就很容易理解他了
LinqToSql在實際開發(fā)中怎么使用?
linqtosql和ef語法基本一樣,最大的坑也就是ef必須在linq語句之外定義好參數(shù),而linq2sql可以直接寫在語句里(例如DateTime.Now.Date甚至Convert.ToXX)。
但如果是開發(fā)正式項目,強烈不建議用linq2sql,因為1 of X update fail這個bug我到現(xiàn)在都找不到解決方法。而且即便沒有使用非mssql的需求,ef也比linq2sql的自定義性更強。請問什么叫ORM映射???
O 代表Object 即對象
R 代表Relation 即關(guān)系
M 代表Mapping 即映射
ORM即 對象關(guān)系映射
通過ORM工具,將對象與關(guān)系數(shù)據(jù)庫 聯(lián)系起來
orm工具 會動態(tài)生成sql語句,使你用面向?qū)ο蟮恼Z法即可完成對數(shù)據(jù)庫的操作
.net中名氣比較大的orm工具有
NHibernate,Linq2Sql,EntityFrameWork等等
希望能夠?qū)δ阌袔椭?
比如 我們要從數(shù)據(jù)庫中 選取一條用戶信息
sql中 我們這樣寫 select * form user where userId= 1
而在NHibernate中 用hbl可以寫為
from User u where u.UserId=1
即可獲得一個User對象 “注意是User對象”
雖然hbl的語法還不能說很面向?qū)ο?但是已經(jīng)比sql進步了 再來看看用linq的語法
from u in User where u.UserId = 1 select u
也可以返回一個User對象 但是語法上要比hbl更面向?qū)ο蟆?