你的位置:首页 > ASP.net教程

[ASP.net教程]Farseer.net轻量级开源框架 V1.x 入门篇:数据库配置及其它配置文件


导航

目   录:Farseer.net轻量级开源框架 目录

上一篇:Farseer.net轻量级开源框架 V1.x 入门篇:新版本说明

下一篇:Farseer.net轻量级开源框架 V1.x 入门篇:表实体类映射

前言

Farseer.Net是支持多数据库的ORM,使用者通过配置文件即可切换指定的数据库而不需要修改项目中的任何代码。本篇讲述如何进行数据库环境的配置。同时也讲述其它配置文件的使用。

配置文件

1、配置文件的路径:

  不管是WebForm、Mvc、WinForm,配置文件统一放在:~/App_Data/ 中。请大家劳记这个路径。框架用到的所有配置文件的路径都会放在这里。

  

  配置文件不需要手动创建,框架在运行时,会查找这个目录下的文件,不存在会自动创建它。

 

2、目前配置文件有:

 
序号管理类名称配置路径项目描述
1DbConfigs数据库配置Db.ConfigFarseer.Net数据库环境配置,支持多个数据库的配置
2SystemConfigs系统配置System.Config系统环境配置,比如是否生成SQL日志
3EmailConfigs邮件配置Email.ConfigFarseer.Net.Utils邮件发送配置,支持多个邮件的配置
4WebConfigs网站配置Web.ConfigFarseer.Net.Utils.Web网站的基础配置,如上传保存的路径、网站Cookies域名称
5WebRewriterConfigsUrl重写配置WebRewriter.Config网站URL地址重写配置,支持多个地址配置
6WebSystemConfigs网站系统配置WebSystem.Config网站系统配置,如Session、Cookies的保存时间、前缀等

 

3、配置文件的动态管理:

  以上配置文件的对应管理类,统一放在:命名空间: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());

数据库配置

 4、重点讲述数据库的配置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属性来决定是用哪种数据库类型,目前支持的数据库类型有如下:

  • DataType = DataBaseType.SqlServer;
  • DataType = DataBaseType.OleDb;
  • DataType = DataBaseType.MySql;
  • DataType = DataBaseType.SQLite;
  • DataType = DataBaseType.Oracle;

 

5、用一个列表描述所有数据库配置:

 
序号数据库ServerUserIDPassWordPortDataTypeDataVerCatalogPoolMinSizePoolMaxSizeConnectTimeoutCommandTimeout描述
1SqlServer

数据库IP

数据库账号

没有则不填

数据库密码

没有则不填

数据库端口

默认可不填

SqlServer

2000

2005

2008

数据库名称

最小连接池

默认可不填

最大连接池

默认可不填

数据库连接时间,单位秒

默认可不填

数据库执行时间,单位秒

默认可不填

 MSSQL,.net常用的数据库
2OleDb文件名称OleDb

3.0

4.0

5.0

95

97

2003

2007+

 不填支持Access/Excel等Oledb类型
3MySql数据库IPMySql不填  数据库名称使用这个数据库时需要把MySql.Data.dll驱动放到/Bin/中
4SQLite 文件名称SQLite不填  不填 使用这个数据库时需要把System.Data.SQLite.dll驱动放到/Bin/中
5Oracle数据库IPOracle不填  SID名称 Oracle大家伙,想吃内存就靠它了。

  其中,在Server处,如果数据库是非网络类型的,如:SQLite、Oledb这种单机数据库(桌面数据库)时,填写的是数据库的文件名称。文件路径存放在:~/App_Data/中。

  比如在SQLite数据库存放在~/App_Data/user.db。在Server填写的则是:user.db即可。框架默认会在~/App_Data/进行查找是否有该数据库。

配置文件的例子
 1 <??> 2 <DbConfig ="http://www.w3.org/2001/ ="http://www.w3.org/2001/> 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>

上面的

系统配置

6、System.Config系统配置文件:

1 <??>2 <SystemConfig ="http://www.w3.org/2001/ ="http://www.w3.org/2001/>3  <IsWriteDbLog>true</IsWriteDbLog>4 </SystemConfig>

目前仅有一项:IsWriteDbLog,默认为false。

设为True后,会在~/App_Data/SqlLog.

 

7、SqlLog.

 1 <??> 2 <ArrayOfSqlRecordEntity ="http://www.w3.org/2001/ ="http://www.w3.org/2001/> 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] &gt; @0_1_ID) AND ([ID] &gt; @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" });