半岛外围网上直营

开源数据访问组件DAC

原创|其它|编辑:郝浩|2009-04-08 09:27:20.000|阅读 477 次

概述:数据访问组件,提供了一组类库和一个代码生成工具,使.net项目中数据访问更简化.

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

项目描述:

数据访问组件,提供了一组类库和一个代码生成工具,使.net项目中数据访问更简化.

 

功能:
多种数据库支持.
提供DataSet, DataTable 和数据实体查询.
执行SQL脚本及存储过程.
条件表达式.
常用SQL方法, 如MAX, MIN等可能被应用在查询中.
数据实体代码及XML文件生成.


使用:
基本功能:

1. 使用 "EntitiesGenerator" 生成工具生成实体项目。
   参见 blog: How to use the "Enties Generator" tool to create an entities project.

2. 添加一个文件名为"connection.config"的数据库连接配置文件,到应用程序的运行目录,文件格式及内容如下:
<?xml version="1.0" encoding="utf-8" ?><connections>  
<connection databaseType="SQL">Data Source=.\SQLEXPRESS;AttachDbFilename=
"|DataDirectory|Database1.mdf";  Integrated Security=True;User 
 Instance=True</connection></connections>

3. 假定我们有个实体类,名叫 "Issue", 可以使用以下代码将它插入数据库

 RaisingStudio.Data.Providers.DataContext dc = 
 new RaisingStudio.Data.Providers.DataContext(); dc.Insert<Issue>(issue);

4. 更新实体.

 dc.Update<Issue>(issue);

5. 删除实体, 可以通过给定实体或实体的主键值进行。

 dc.Delete<Issue>(issue);

 dc.Delete<Issue>(issueID);

6. 查询实体, 通过三个不同的方法,可以分别获得 IEnumerable<T>, IList<T> or DataTable 作为返回结果。

 IEnumerable<Issue> query = dc.Query<Issue>(); 
foreach(Issue issue in query) { }
 IList<Issue> issueList = dc.QueryForList<Issue>();
在查询中,还可以使用“条件表达式”.

 DataTable dataTable = dc.QueryForDataTable<Issue>
(Issue._.IssueID > 1);

7. 可以通过GetData()方法,查询单个实体,使用包含主键值的实体,主键值或条件表达式作为参数。

 Issue issue = new Issue(); issue.IssueID = 2; issue = dc.
GetData<Issue>(issue);
 Issue issue = dc.GetData<Issue>(2);
  Issue issue = dc.GetData<Issue>(Issue._.IssueID == 2);

8. 更新DataTable.

 int result = dc.UpdateDataTable<Issue>(dataTable);


高级特性:

1. 常用SQL方法, 包括 GetCount, GetMin, GetMax, GetSum and GetAvg.

int result = dc.GetCount<Issue>();object minValue 
= dc.GetMin<Issue>(Issue._.Progress);decimal maxValue
 = Convert.ToDecimal(dc.GetMax<Issue>(Issue._.Progress,
Issue._.Title == "test title"));

2. Save 和 Exists.

int result = dc.Save<Issue>(issue);bool saved = 
dc.Exists<Issue>(issue);bool ex = dc.Exists<Issue>
(Issue._.Title == "test title");

3. 部分列.

Issue issue = dc.GetData<issue>(2, Issue._.Status);
issue.Status = IssueStatus.Fixed;int result  =
  dc.Update<Issue>(issue, Issue._.Status);

4. 批量操作.

int result = dc.Delete<issue>(Issue._.Status ==
 IssueStatus.Fixed);result  = dc.Update<Issue>
 (issue, Issue._.Status == IssueStatus.Fixed, Issue._.Status);

5. 排序, 使用 "OrderBy" 方法或  ^ 和  ^ ! 运算符应用在查询中,可以对查询进行排序.

IEnumerable<Issue> query = dc.Query<Issue>
(Issue.All.OrderBy(Issue._.IssueID));query = 
 dc.Query<Issue>(Issue._.Status == IssueStatus.Fixed ^ Issue._.IssueID);

6. 分页.

 IList<Issue> issueList = dc.QueryForList<Issue>(Issue.All, 0, 100);

7. 事务.

try{    this.dc.BeginTransaction();    try   
{        int result = this.dc.Insert<Issue>(issue); 
this.dc.CommitTransaction();    }    catch (Exception ex)
    {        System.Diagnostics.Debug.WriteLine(ex); 
this.dc.RollbackTransaction();        throw;    }}catch (Exception ex)
 {System.Diagnostics.Debug.WriteLine(ex);    throw;}

8. 多主键.

MutipleKeysTable mt = dc.GetData<MutipleKeysTable>
(new object[] { key1, key2 }, 
 MutipleKeysTable.Except(MutipleKeysTable._.Value2));

9. 使用 common command 查询.

CommonCommand cmd = new CommonCommand();
cmd.CommandText = string.Format("SELECT [IssueID], 
[{0}] FROM .[Issue] WHERE [{0}] = @p1", Issue._.Title);
 cmd.Parameters.Add("@p1", "test title");Issue issue = dc.GetData<Issue>(cmd);

10. 执行 common command, 支持 ExecuteForDataTable, ExecuteForList, ExecuteQuery, ExecuteReader, ExecuteScalar 和 ExecuteNoQuery 等方法.

RaisingStudio.Data.CommonCommand cmd = 
new CommonCommand(string.Format("UPDATE .[{0}] 
SET [{1}] = [{1}] + 1 WHERE [{2}] = @p1", Issue._, Issue._.Progress,
Issue._.IssueID));cmd.AddParameter("@p1", System.
Data.DbType.Int32, maxID);int result = this.dc.
ExecuteNoQuery<Issue>(cmd);

11. SQL 脚本日志.

DataContext dc = new DataContext();dc.Log = System.Console.Out;

12. 多种数据库 providers, 添加如下的 xml 项到 "providers.config" 配置文件中, 就可以在 "connections.config" 中使用.

13. 自定义数据类型“转换器”,  以下就是一个 "TypeConverter" 示例代码,及如何配置到 "converters.config" 配置文件中.

14. “实体定义”配置, "*.definition.xml" 文件可以作为资源文件嵌入到程序集在,也可以留在文件系统上,"EntitiesGenerator" 实体生成工具生在项目是采用的嵌入资源的方式, 如果要使用文件的方式,则需要配置一个名叫"definitions.config"的配置文件

15. Common command 管理器. 把 SQL脚本配置在 "commands.config" 中后,可以用如下代码读取使用。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
利记足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 真人boyu·博鱼滚球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 最大网上PM娱乐城盘口(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规雷火竞技官方买球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 雷火竞技权威十大网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) boyu·博鱼信誉足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 权威188BET足球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规188BET足球大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)