LinqToDB框架是一個(gè)輕量級的ORM框架。當(dāng)然,功能上來講一定比不上Entity Framework的強(qiáng)大。但是在使用上總讓筆者感覺有一點(diǎn)Entity Framework的影子。筆者想過可能的原因有倆點(diǎn):一是DataContext類的作用跟DbContext的作用很接近;二是都實(shí)現(xiàn)Linq查詢的功能。那么DataContext類到底在LinqToDB框架里面算什么呢?筆者把DataContext類理解為這個(gè)框架的上下文——用于驅(qū)動(dòng)整個(gè)LinqToDB框架。所以本章也是為DataContext類而來。
框架配置
從源碼里面我們可以看到DataContext類有三個(gè)構(gòu)造函數(shù)。筆者也是根據(jù)這三個(gè)構(gòu)造函數(shù)來推斷出LinqToDB框架可存在多種啟動(dòng)方式。這里面最大的亮點(diǎn)不是構(gòu)造函數(shù)而是他的參數(shù)名。如下代碼。
public DataContext(): this(DataConnection.DefaultConfiguration); public DataContext(string configurationString); public DataContext(IDataProvider dataProvider,string connectionString);
上面代碼有倆個(gè)參數(shù)名很重要——configurationString和connectionString。如果把他們都譯過來的話,就是配置字符串和連接字符串。相信不難看出configurationString就是跟配置文件畫上關(guān)系。而connectionString就是傳入連接字符串的意思。本質(zhì)來講實(shí)現(xiàn)DataContext類只有倆種方式:一種是通過配置文件(如App.config)來實(shí)現(xiàn);一種是用IDataProvider接口實(shí)例和連接字符串來實(shí)現(xiàn)。如果你什么也不傳的話,就會(huì)使用默認(rèn)的配置信息來實(shí)現(xiàn)。
LinqToDB框架根據(jù).NET配置機(jī)制實(shí)現(xiàn)自定義配置。跟配置有關(guān)系的類都存放在LinqToDB.Configuration命名空間下。如果要實(shí)現(xiàn).NET配置機(jī)制的話,就必須要有一個(gè)實(shí)現(xiàn)ConfigurationSection的類。LinqToDBSection類就是要我們要找的類了。作者用單例模式來設(shè)計(jì)LinqToDBSection類。相信大家都能明白作者的目地。那么LinqToDB框架是什么時(shí)候加載配置信息的呢?
注意:LinqToDBSection有倆個(gè)屬性一個(gè)子點(diǎn)。DefaultConfiguration屬性用于指定默認(rèn)配置字符串。DefaultDataProvider屬性用于指定默認(rèn)數(shù)據(jù)提供者。還有叫dataProviders的子節(jié)點(diǎn)。關(guān)于data