博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开源数据访问组件Smark.Data 1.8入门编
阅读量:7138 次
发布时间:2019-06-28

本文共 2694 字,大约阅读时间需要 8 分钟。

 本章节主要讲述如何使用Smark.Data 1.8进行快速的数据库应用开发,主要内容包括配置,执行SQL和存储过程等基础的数据操作.

配置

在组件使用之前必须进行一个初始化配置,主要配置数据访问设备和对应的数据库的连接信息.组件可以通过两种途径来进行数据配置分别是配置文件和代码.

  • Config配置
  • 代码配置
DBContext.SetConnectionDriver
(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
    > query = "select * from employees"; foreach (Employee item in query.Value) { }
    组件会把字段名和对象属性名称一致的自动匹配并填充相应的值;填充的实体需要描述吗?不需要组件会在运行期处理.是使用反射填充吗?不会组件同样会在运行期内生成对应用的代理方法代替反射操作.
  • 在很多时候我们需要查询一条记录
    Query
    query = "select * from employees where EmployeeID=3"; string firstname = query.Value.FirstName;
  • 如果需要执行一个统计
    Query
    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
    > query = sql;

执行存储过程

组件调用存储过程需要用对象来描述.

  • 存储过程
    ALTER PROCEDURE [dbo].[CustOrderHist] @CustomerID nchar(5)ASSELECT ProductName, Total=SUM(Quantity)FROM Products P, [Order Details] OD, Orders O, Customers CWHERE C.CustomerID = @CustomerIDAND C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND OD.ProductID = P.ProductIDGROUP 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
    > query = coh;
    只需要简单把描述对象设置给相应的查询对象即可.

以上就是组件使用SQL和存储的情况,如果你是SQL或存储过程的忠实fans那相信Smark.Data所提供的功能会让你在基础的数据操作上变得更轻松.对于偏向于对象映射操作的朋友们也不要感到失望,因为下一章节会详细讲术组件的对象映射功能,相信在对象操作上同样也会带来惊喜.

疑问:为什么在所有访问操作过程都没看到指定DB的信息?

其实组件会默认使用第一个配置的DBContext,所以操作在不指定DBContext的情况下都是使用它.

项目地址:

转载地址:http://fmprl.baihongyu.com/

你可能感兴趣的文章
asp.net 8 Request,Response,Server
查看>>
Windows API 技巧集
查看>>
Binary Tree Level Order Traversal [LEETCODE]
查看>>
nginx代理天地图做缓存解决跨域问题
查看>>
HDU_1542_线段树【扫描线】
查看>>
[转]Oracle数据库ASH和AWR的简单介绍
查看>>
客户单操作Cookie
查看>>
Swift -- enum 继承 protocol
查看>>
Java基础 - 流程控制语句
查看>>
剑法三套,程序员也能赚大钱(2) 转
查看>>
《Java EE 开发技术与案例教程》 这是一本好书啊:简洁精辟(相见恨晚)
查看>>
十、装饰(Decorator)模式 --结构模式(Structural Pattern)
查看>>
WWDC 2013 Session笔记 - UIKit Dynamics入门
查看>>
5月7日——采用第三方页面内容,但是顶部title使用自己的
查看>>
Spring Boot 构建电商基础秒杀项目 (十) 交易下单
查看>>
SQL中创建用户的方法
查看>>
PHP168 6.0及以下版本login.php代码执行
查看>>
Java代理(jdk静态代理、动态代理和cglib动态代理)
查看>>
WPF生命周期
查看>>
各大Oj平台介绍
查看>>