前言
Farseer.Net是支持多数据库的ORM,使用者通过配置文件即可切换指定的数据库而不需要修改项目中的任何代码。本篇讲述如何进行数据库环境的配置。同时也讲述其它配置文件的使用。
配置文件
不管是WebForm、Mvc、WinForm,配置文件统一放在:~/App_Data/ 中。请大家劳记这个路径。框架用到的所有配置文件的路径都会放在这里。
配置文件 不需要手动创建 ,框架在运行时,会查找这个目录下的文件,不存在会 自动创建 它。
序号 | 管理类 | 名称 | 配置路径 | 项目 | 描述 |
1 | DbConfigs | 数据库配置 | Db.Config | Farseer.Net | 数据库环境配置,支持多个数据库的配置 |
2 | SystemConfigs | 系统配置 | System.Config | 系统环境配置,比如是否生成SQL日志 | |
3 | EmailConfigs | 邮件配置 | Email.Config | Farseer.Net.Utils | 邮件发送配置,支持多个邮件的配置 |
4 | WebConfigs | 网站配置 | Web.Config | Farseer.Net.Utils.Web | 网站的基础配置,如上传保存的路径、网站Cookies域名称 |
5 | WebRewriterConfigs | Url重写配置 | WebRewriter.Config | 网站URL地址重写配置,支持多个地址配置 | |
6 | WebSystemConfigs | 网站系统配置 | WebSystem.Config | 网站系统配置,如Session、Cookies的保存时间、前缀等 |
以上配置文件的对应管理类,统一放在:命名空间:FS.Configs中。
其中AbsConfigs.cs是所有配置文件的基类,配置文件通过:序列化、反序列化进行持久化管理。(在FS.Utils)
大家无需关心它们是如何运行的。只要知道这些配置文件被持久化到 ~/App_Data/ 中即可。
要修改他们时,只需要 修改这个路径的物理文件 即可,而不需要去修改他们的管理类。
如果你需要通过程序来读取这些配置文件,而在程序中使用时可以通过 类名.ConfigEntity.属性 来获取它们。
比如获取数据库配置文件的数据库类型的读取操作是:
1 DbConfigs.ConfigEntity.DbList[0].DataType
DbConfigs.ConfigEntity得到的是整个数据库配置文件的配置
DbList[0]是指数据库配置的第1项。(因为一个项目中,数据库有可能是多个的)
同时我们也可以通过程序来动态的修改被保存它们:
1 DbConfigs.SaveConfig(new DbConfig());
数据库配置
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中的。大家通过上面的介绍,可自行根据项目情况进行配置。
系统配置
1 <?xml version="1.0"?> 2 <SystemConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 3 <IsWriteDbLog>true</IsWriteDbLog> 4 </SystemConfig>
目前仅有一项:IsWriteDbLog,默认为false。
设为True后,会在~/App_Data/SqlLog.xml生成数据库的日志文件。
1 <?xml version="1.0"?> 2 <ArrayOfSqlRecordEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 3 <SqlRecordEntity> 4 <ID>0ae653a7-876c-4399-86de-6b326fa7bcd2</ID> 5 <UserTime>43</UserTime> 6 <Name>Members_User</Name> 7 <LineNo>14</LineNo> 8 <MethodName>GetValue</MethodName> 9 <FileName>e:/公司/Farseer.Net/Framework/V1.0/Test/Farseer.Net.Core.Tests/TableTest/GetValueTest.cs</FileName> 10 <CreateAt>2015-06-03T19:04:53.7794197+08:00</CreateAt> 11 <Sql>SELECT TOP 1 [UserName] FROM [Members_User] WHERE (([ID] > @0_1_ID) AND ([ID] > @0_2_ID)) </Sql> 12 <SqlParamList> 13 <SqlParam> 14 <Name>@0_1_ID</Name> 15 <Value>1</Value> 16 </SqlParam> 17 <SqlParam> 18 <Name>@0_2_ID</Name> 19 <Value>2</Value> 20 </SqlParam> 21 </SqlParamList> 22 </SqlRecordEntity> 23 </ArrayOfSqlRecordEntity>
当然这里我们阅读起来还是比较困难的,因此我写了一个简单的工具进行显示它们,支持简单的数据筛选
这个工具存放在:/Farseer.Net/Framework/V1.0/Tools/Farseer.Net.Tools.SqlLog/bin/Debug/Farseer.Net.Tools.SqlLog.exe
大家需要的时候可以自行打开,进行SQL分析。
这在进行优化时,是非常重要的一种手段。通常我们的数据性能之所以慢就是因为使用了过多的SQL造成的。
而通过这个分析,可以直观的看出哪些方法用了大量的SQL。从而知道哪些地方有必要进行优化了。
好了,本篇文章讲解到这,告诉了大家如何配置数据库、及SQL的日志分析。
后面会告诉大家,实体类的映射如何绑定到这个数据库配置文件中来。(配置文件可同时配置多个数据库)
导航
目 录: Farseer.net轻量级开源框架 目录
上一篇: Farseer.net轻量级开源框架 V1.x 入门篇:新版本说明
下一篇: Farseer.net轻量级开源框架 V1.x 入门篇:表实体类映射
广告时间
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" });