Farseer.Net是支持多數據庫的ORM,固然這是ORM的一個最基本的要求。app
使用者經過配置文件Db.Config,可切換指定的數據庫而不須要修改項目中的任何代碼。(Db.Config配置文件是可配置列表(多個)數據庫的)框架
本篇講述如何進行數據庫環境的配置。同時也講述其它配置文件的使用。工具
一、配置文件的路徑:網站
無論是WebForm、Mvc、WinForm,配置文件統一放在:~/App_Data/ 中。請你們勞記這個路徑。框架用到的全部配置文件的路徑都會放在這裏。spa
配置文件不須要手動建立,框架在運行時,會查找這個目錄下的文件,不存在會自動建立它。.net
二、目前配置文件有:日誌
序號 | 管理類 | 名稱 | 配置路徑 | 項目 | 描述 |
1 | DbConfigs | 數據庫配置 | Db.Config | Farseer.Net | 數據庫環境配置,支持多個數據庫的配置 |
2 | SystemConfigs | 系統配置 | System.Config | 系統環境配置,好比是否生成SQL日誌 | |
3 | ExceptionEmailConfigs | 異常郵件配置 | ExceptionEmail.Config | 當System.Config設置了異常通知時,會找到該郵件配置進行發送郵件 | |
4 | SqlMapConfigs | SQL腳本配置化 | SqlMap.Config | 容許客戶端將SQL腳本寫在該配置中,經過SqlSet進行執行(自動映射) | |
5 | EmailConfigs | 郵件配置 | Email.Config | Farseer.Net.Utils | 郵件發送配置,支持多個郵件的配置 |
6 | WebConfigs | 網站配置 | Web.Config | Farseer.Net.Utils.Web | 網站的基礎配置,如上傳保存的路徑、網站Cookies域名稱 |
7 | WebRewriterConfigs | Url重寫配置 | WebRewriter.Config | 網站URL地址重寫配置,支持多個地址配置 | |
8 | WebSystemConfigs | 網站系統配置 | WebSystem.Config | 網站系統配置,如Session、Cookies的保存時間、前綴等 |
三、配置文件的動態管理:
以上配置文件的對應管理類,統一放在:命名空間:FS.Configs中。
其中FS.Utils.AbsConfigs.cs是全部配置文件的基類,配置文件經過:序列化、反序列化進行持久化管理。
你們無需關心它們是如何運行的。只要知道這些配置文件被持久化到~/App_Data/中便可。
要修改他們時,只須要修改這個路徑的物理文件便可,而不須要去修改他們的管理類。
若是你須要經過程序來讀取這些配置文件,而在程序中使用時能夠經過 類名.ConfigEntity.屬性 來獲取它們。
好比獲取數據庫配置文件的數據庫類型的讀取操做是:
1 DbConfigs.ConfigEntity.DbList[0].DataType
DbConfigs.ConfigEntity獲得的是整個數據庫配置文件的配置
DbList[0]是指數據庫配置的第1項。(由於是支持(多個)列表數據庫配置的,一個項目中,數據庫有多是多個的)
同時咱們也能夠經過程序來動態的修改被保存它們:
1 DbConfigs.SaveConfig(new DbConfig());
四、重點講述數據庫的配置Db.Config:
1 /// <summary> 數據庫鏈接配置 </summary> 2 public class DbInfo 3 { 4 /// <summary> 數據庫鏈接串 </summary> 5 public string Server = "."; 6 /// <summary> 數據庫賬號 </summary> 7 public string UserID = "sa"; 8 /// <summary> 數據庫密碼 </summary> 9 public string PassWord = "123456"; 10 /// <summary> 端口號 </summary> 11 public string Port = "1433"; 12 /// <summary> 數據庫類型 </summary> 13 public DataBaseType DataType = DataBaseType.SqlServer; 14 /// <summary> 數據庫版本 </summary> 15 public string DataVer = "2008"; 16 /// <summary> 數據庫目錄 </summary> 17 public string Catalog = "數據庫名稱"; 18 /// <summary> 最小鏈接池 </summary> 19 public int PoolMinSize = 0; 20 /// <summary> 最大鏈接池 </summary> 21 public int PoolMaxSize = 0; 22 /// <summary> 數據庫鏈接時間限制,單位秒 </summary> 23 public int ConnectTimeout = 30; 24 /// <summary> 數據庫執行時間限制,單位秒 </summary> 25 public int CommandTimeout = 30; 26 }
經過DataType屬性來決定是用哪一種數據庫類型,目前支持的數據庫類型有以下:
五、用一個列表描述全部數據庫配置:
序號 | 數據庫 | Server | UserID | PassWord | Port | DataType | DataVer | Catalog | PoolMinSize | PoolMaxSize | ConnectTimeout | CommandTimeout | 描述 |
1 | SqlServer | 數據庫IP |
數據庫帳號 沒有則不填 |
數據庫密碼 沒有則不填 |
數據庫端口 默承認不填 |
SqlServer | 2000 2005 2008 |
數據庫名稱 | 最小鏈接池 默承認不填 |
最大鏈接池 默承認不填 |
數據庫鏈接時間,單位秒 默承認不填 |
數據庫執行時間,單位秒 默承認不填 |
MSSQL,.net經常使用的數據庫 |
2 | OleDb | 文件名稱 | OleDb | 3.0 4.0 5.0 95 97 2003 2007+ |
不填 | 支持Access/Excel等Oledb類型 | |||||||
3 | MySql | 數據庫IP | MySql | 不填 | 數據庫名稱 | 使用這個數據庫時須要把MySql.Data.dll驅動放到/Bin/中 | |||||||
4 | SQLite | 文件名稱 | SQLite | 不填 | 不填 | 使用這個數據庫時須要把System.Data.SQLite.dll驅動放到/Bin/中 | |||||||
5 | Oracle | 數據庫IP | Oracle | 不填 | SID名稱 | Oracle你們夥,想吃內存就靠它了。 |
其中,在Server處,若是數據庫是非網絡類型的,如:SQLite、Oledb這種單機數據庫(桌面數據庫)時,填寫的是數據庫的文件名稱。文件路徑存放在:~/App_Data/中。
好比在SQLite數據庫存放在~/App_Data/user.db。在Server填寫的則是:user.db便可。框架默認會在~/App_Data/進行查找是否有該數據庫。
1 <?xml version="1.0"?> 2 <DbConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 3 <DbList> 4 <DbInfo> 5 <Server>.</Server> 6 <DataType>SqlServer</DataType> 7 <DataVer>2008</DataVer> 8 <Catalog>Farseer</Catalog> 9 <PoolMinSize>16</PoolMinSize> 10 <PoolMaxSize>100</PoolMaxSize> 11 <ConnectTimeout>30</ConnectTimeout> 12 <CommandTimeout>60</CommandTimeout> 13 </DbInfo> 14 <DbInfo> 15 <Server>User.db</Server> 16 <DataType>SQLite</DataType> 17 <PoolMinSize>16</PoolMinSize> 18 <PoolMaxSize>100</PoolMaxSize> 19 <ConnectTimeout>30</ConnectTimeout> 20 <CommandTimeout>60</CommandTimeout> 21 </DbInfo> 22 </DbList> 23 </DbConfig>
上面的XML文件,就是在~/App_Data/Db.Config中的。你們經過上面的介紹,可自行根據項目狀況進行配置。
好了,本篇文章講解到這,告訴了你們如何配置數據庫、及SQL的日誌分析。
在下一篇中,會講述數據庫上下文(DbContext)映射如何綁定到這個數據庫配置文件中來。(配置文件可同時配置多個數據庫,或動態配置它們)
QQ羣:116228666 (Farseer.net開源框架交流) 請註明:Farseer.Net
Farseer.Net是一款ORM框架 + 經常使用工具 + 擴展集合。
Farseer 寓意:先知、預言家 一般在某些場合時,提供計謀、策略。也但願該框架能給你們提供最大化的便捷。
ORM:其英文全稱是:Object(對象) Relational(關係) Mapping(映射)
Farseer.Net的目標是:快速上手、快速開發、簡單方便。
1 Table.Data.User.Where(o=>o.ID == 1).ToEntity(); 2 Table.Data.User.Where(o=>o.ID > 1).ToList(); 3 Table.Data.User.Where(o=>o.ID != 0).Delete(); 4 Table.Data.User.Where(o=>o.ID != 0).AddUp(o=>o.LoginCount, 1); 5 Table.Data.User.Where(o=>o.ID == 1).Update(new User{ UserName = "newName" }); 6 Table.Data.User.Insert(new User{ UserName = "newName" });