开源数据访问组件Smark.Data 1.8入门编
本章节主要讲述如何使用Smark.Data 1.8进行快速的数据库应用开发,主要内容包括配置,执行SQL和存储过程等基础的数据操作.
配置
在组件使用之前必须进行一个初始化配置,主要配置数据访问设备和对应的数据库的连接信息.组件可以通过两种途径来进行数据配置分别是配置文件和代码.
- Config配置
<configSections><section name="smarkdata" type="Smark.Data.SmarkDataSection,Smark.Data"/> </configSections><smarkdata><Connection><add name="0" type="Smark.Data.MSSQL,Smark.Data" connectionstring="Data Source=WIN-KHLG2RFMS2R;Initial Catalog=Northwind;User ID=sa;Password=abc_123"/></Connection><Assembly><clear/><Assembly/></smarkdata>
- 代码配置
DBContext.SetConnectionDriver<MSSQL>(ConnectionType.Context1);DBContext.SetConnectionString(ConnectionType.Context1, @"Data Source=WIN-KHLG2RFMS2R;Initial Catalog=Northwind;User ID=sa;Password=abc_123");以上分别是配置一个MSSQL的数据访问设备和相应的数据库连接信息.也许会有同学问组件支持多数据库配置吗?答案是可以的,组件支持最多配置30个不同数据访问信息.简单地说使用Smark.Data进行数据库开发的时候可以同时访问多达30个数据库;相信这个配置时是完全可以满足大部分应用的需要,如果不够当然可以联系我或自己下载代码修改一下:)
执行SQL
配置好数据访问上下文后,执行SQL语句就会变得很方便.
- 执行SQL并填充到对象列表
Query<IList<Employee>> query = "select * from employees";foreach (Employee item in query.Value){}组件会把字段名和对象属性名称一致的自动匹配并填充相应的值;填充的实体需要描述吗?不需要组件会在运行期处理.是使用反射填充吗?不会组件同样会在运行期内生成对应用的代理方法代替反射操作.
- 在很多时候我们需要查询一条记录
Query<Employee> query = "select * from employees where EmployeeID=3";string firstname = query.Value.FirstName;- 如果需要执行一个统计
Query<int> query = "select count(*) from employees";int count = query.Value;- 有时候查询需要动态组合
由于很多时候SQL都是动态组合,因此组件提供了一个SQL对象来处理这些情况.DateTime? start=null, end=null;SQL sql = "select * from orders where 1=1";if (start != null)sql=sql["start",start.Value] +" orderdate >=@start";if(end !=null)sql = sql["end", end.Value] + " orderdate <@end";Query<IList<OrderBase>> query = sql;
执行存储过程
组件调用存储过程需要用对象来描述.
- 存储过程
ALTER PROCEDURE [dbo].[CustOrderHist] @CustomerID nchar(5) AS SELECT ProductName, Total=SUM(Quantity) FROM Products P, [Order Details] OD, Orders O, Customers C WHERE C.CustomerID = @CustomerID AND C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND OD.ProductID = P.ProductID GROUP BY ProductName- 描述结构
[Proc]public class CustOrderHist:StoredProcedure{[ProcParameter]public string CustomerID{get;set;}}可以简单地通过承继StoreProcedure类来实现一个存储过程描述,通过Proc属性来描述存储过程名称,缺省情况下存储过称名称是相应的类名称;ProcParameter用于描述存储对应的存参数,可以通过Direction来设置参数的类型,以是参数为输出和返回类型的时,对象在执行完成后通过访问相关属性值即可得到相应的输出或返回值.
- 执行存储过程
CustOrderHist coh = new CustOrderHist();coh.CustomerID = "ALFKI";Query<IList<OrderHist>> query = coh;只需要简单把描述对象设置给相应的查询对象即可.
以上就是组件使用SQL和存储的情况,如果你是SQL或存储过程的忠实fans那相信Smark.Data所提供的功能会让你在基础的数据操作上变得更轻松.对于偏向于对象映射操作的朋友们也不要感到失望,因为下一章节会详细讲术组件的对象映射功能,相信在对象操作上同样也会带来惊喜.
疑问:为什么在所有访问操作过程都没看到指定DB的信息?
其实组件会默认使用第一个配置的DBContext,所以操作在不指定DBContext的情况下都是使用它.项目地址:http://smark.codeplex.com/
转载于:https://www.cnblogs.com/smark/archive/2013/03/19/2968471.html
开源数据访问组件Smark.Data 1.8入门编相关推荐
- 开源数据访问组件Smark.Data 1.8
Smark.Data一直强调以最简单和高效的方式访问数据库,在这个版本中组件引入了Query<T>对象,它是一个查询值描述对象,通过它可以更方便地进行数据查询并获取结果.组件会分析T的具体 ...
- 开源数据访问组件Smark.Data 1.7新增功能
借助于扩展方法的功能,这一版本的改进可以让数据库操作变得更简单方便,在数据库操作相关会给你一种全新的体验.主要改进有以下几点: 条件表达式可以直接和string进行组合,从而更灵活地创建复杂的查询条件 ...
- 开源组件Smark.Data处理SQL和存储过程
完全通过组件对象描述的方式来完成所有数据库操作是不太现实的事情,所以组件提供SQL和存储过程的执行支持.随着组件版本的不断完善在1.7后组件在使用SQL和存储也是一件极其方便的事情.其简洁的操作方式相 ...
- 测试 ClownFish、CYQ、Entity Framework、Moon、MySoft、NHibernate、PDF、XCode数据访问组件性能...
下期预告: 由于很多园友反馈,有的组件不应该缺席.测试复杂度不够.测试还缺乏一定的公平. 因此考虑在下一个版本中,确保在更加公平的前提下进行更高复杂度的测试 . 同时将分为2组测试,纯SQL组件及纯O ...
- 转:Firebird 数据访问组件 (Delphi)
转自:http://www.faceker.com/200809/firebird-data-access-components.html 在 Delphi 下可访问 Firebird 数据库的组件非 ...
- 测试 ClownFish、CYQ、Entity Framework、Moon、MySoft、NHibernate、PDF、XCode数据访问组件性能
"啊!你在用ORM?会不会性能很差啊?" 用数字来说话,打破模糊的.传言的印象. 标题提到的组件"增删改查"都实现了测试代码,所以除了测试外,也可以把此项目作为 ...
- 微软提供的数据访问组件SqlHelper
数据访问组件是一组通用的访问数据库的代码,在所有项目中都可以用,一般不需要修改.本节使用的是Microsoft提供的数据访问助手,其封装很严密,且应用简单. 首先要先添加一个类,并命名为SqlHelp ...
- bde怎么配置oracle数据库,Oracle数据访问组件ODAC教程:如何从BDE和DOA迁移
ODAC(Oracle Data Access Components )是一个Oracle数据访问组件.ODAC可以为Oracle提供本地连接(Delphi, Delphi for .NET, C++ ...
- idata 数据访问组件库 (2021版)
idata数据访问组件库(RX11)版本: 2022-09-20 下载: idata 数据组件库 for RAD Studio RX10.3.x (260) 发布于:2020-02-20 使用 ...
最新文章
- mysql 数据库异常大_Mysql连接数据库异常汇总【必收藏】
- pytorch VIF(VIT 改)快了两倍
- java学习笔记(2):获取文件名和自定义文件过滤器
- java jframe 背景颜色_Java JFrame背景颜色不起作用
- Java实现单链表的合并(保证数据的有序性)
- 看C++文档的小知识
- STM32 基于正电原子开发板,改换芯片为STM32F103R6,Proteus仿真的一些问题
- java中集合选取怎么选_集合中的可选
- Asp.Net微信发布菜单,出现“invalid sub button url domain hint”错误
- buffer 和cache的区别
- 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一1.1 计算机科学和工程的课程体系及职业发展...
- 【华为云技术分享】云小课 | SAP HANA高可用之实战演练
- Kotlin学习笔记 第二章 类与对象 第三节接口 第四节 函数式接口
- java+web提交sumbit,jsp怎么让submit不提交
- Lua 正确的尾调用(proper tail call)
- struts的工作原理
- 关于lua字节码在32位和64位系统上不兼容的问题
- 刷题记录 CF每日一题打卡 2020.5月26-6月2
- 计算机维护系统Win8PE,U盘启动计算机维护系统(Win8PEx64内核仅160M)
- webApp用户体验优化——quickClick
热门文章
- 红十字会急救证模拟考试系统-概要设计说明书
- 【操作系统】== Win10 安装 VMware 15 超详细教程 ==
- php scrscriptipt,HCTF 2016 writeup——web篇
- 饿了么张雪峰:云服务助力饿了么发展 云计算一定是未来
- Day1使用Burpsuite抓包工具抓包,改变UA头使得手机和pc端界面互相转换
- 【前端】VUE组件操作
- 计算机学的好的人性格,适合“性格内向”的人选择的几大专业,工作稳定,薪资可观!...
- word文档批量生成工具(附免费软件)(按Excel表格内容自动替换内容生成文档)
- 微信小程序图标和文字不居中
- APP应用 隐私声明