新聞中心
話(huà)說(shuō)Linq to SQL支持SQL Server等多種數(shù)據(jù)庫(kù)的,而且應(yīng)該支持多種數(shù)據(jù)庫(kù),到最后卻落的這個(gè)局面,是為了商業(yè)考慮還是本來(lái)技術(shù)就不成熟?不得而知。不過(guò)不管怎么說(shuō)Linq to SQL的體系結(jié)構(gòu)確實(shí)是支持?jǐn)U展的。

坡頭ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
在System.Data.Linq.Mapping這個(gè)命名空間下微軟提供了一個(gè)特性:ProviderAttribute,使用強(qiáng)類(lèi)型的DataContext或使用Xml做映射的時(shí)候,該特性可以用來(lái)指定具體的數(shù)據(jù)庫(kù)提供者。如下:
- [Database(“dbo.cnblogs”)]
- [Provider(typeof(SqlProvider))]
- Public CnBlogDataContext : DataContext
- {
- }
這就表明我們的Linq to SQL支持SQL Server數(shù)據(jù)庫(kù)了,SqlProvider是實(shí)現(xiàn)了IProvider接口的(該接口存在于System.Data.Linq.Provider命名空間下)。
在DataContext初始化時(shí)執(zhí)行的Init方法里有這樣幾行代碼:
- if (model.ProviderType == null)
- {
- throw Error.ProviderTypeNull();
- }
- Type providerType = model.ProviderType;
- if (!typeof(IProvider).IsAssignableFrom(providerType))
- {
- throw Error.ProviderDoesNotImplementRequiredInterface(providerType,
- typeof(IProvider));
- }
- this.provider = (IProvider) Activator.CreateInstance(providerType);
- this.provider.Initialize(this.services, connection);
請(qǐng)注意的是,實(shí)際的Linq to SQL支持SQL Server,所以類(lèi)圖描述的關(guān)系并不存在,但是我們從代碼中完全可以想象的到即使要擴(kuò)展也是很容易的,這就是架構(gòu)的力量,即使是昨天的設(shè)計(jì)也能應(yīng)付明天的變化。
關(guān)于Provider的初始化就介紹到這里了,在文章末尾的源代碼下載里提供了IProvider類(lèi)和SqlProvider類(lèi),你可以看看初始化的過(guò)程,并想想如何構(gòu)建一個(gè)可擴(kuò)展的架構(gòu)。
分享名稱(chēng):LinqtoSQL支持SQLServer
分享網(wǎng)址:http://www.5511xx.com/article/djoiijp.html


咨詢(xún)
建站咨詢(xún)
